這個(gè)代碼是參考了你的代碼寫的,你的代碼在HDOJ 是WA的,下面有點(diǎn)小小的不同,通過(guò)n次得測(cè)試,發(fā)現(xiàn)了,但不知是什么原因。
#include<iostream>
using namespace std;
int main(){
int num_1,num_2,num_5,num,i,j,k;
int c[8005],temp[8005];
while(scanf("%d%d%d",&num_1,&num_2,&num_5)!=EOF&&(num_1||num_2||num_5) ){
num=num_1*1+num_2*2+num_5*5;
for( i=0;i<=num;i++){ //初始化
c[i]=0;
temp[i]=0;
}
//第一個(gè)表達(dá)式和第二個(gè)表達(dá)式相乘
for( i=0;i<=num_1;i++) //用第一個(gè)表達(dá)式表(即面值為1的硬幣)表達(dá)所有的面值都只有一種情況
c[i]=1;
for( j=0;j<=num_1*1;j++)
for( k=0;k<=num_2*2;k+=2)
temp[j+k]+=c[j];
for( j=0;j<=num_1*1+num_2*2;j++){//擴(kuò)大面值范圍
c[j]=temp[j];
temp[j]=0;
}
//第二個(gè)表達(dá)式和第三個(gè)表達(dá)式相乘
for( j=0;j<=num_1*1+num_2*2;j++)
for( k=0;k<=num_5*5;k+=5)
temp[j+k]+=c[j];
for( j=0;j<=num;j++){ //擴(kuò)充范圍
c[j]=temp[j];
temp[j]=0;
}
for( i=0;i<=num;i++) //查找第一個(gè)為0的數(shù)
if(c[i]==0){
break;
}
printf("%d\n",i); //不知道是什么原因,這個(gè)放在if(c[i]==0) 里面是WA的 ,估計(jì)是HDOJ的系統(tǒng)問(wèn)題
}
return 0;
}
回復(fù) 更多評(píng)論