這個代碼是參考了你的代碼寫的,你的代碼在HDOJ 是WA的,下面有點小小的不同,通過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;
}
//第一個表達式和第二個表達式相乘
for( i=0;i<=num_1;i++) //用第一個表達式表(即面值為1的硬幣)表達所有的面值都只有一種情況
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++){//擴大面值范圍
c[j]=temp[j];
temp[j]=0;
}
//第二個表達式和第三個表達式相乘
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++){ //擴充范圍
c[j]=temp[j];
temp[j]=0;
}
for( i=0;i<=num;i++) //查找第一個為0的數
if(c[i]==0){
break;
}
printf("%d\n",i); //不知道是什么原因,這個放在if(c[i]==0) 里面是WA的 ,估計是HDOJ的系統問題
}
return 0;
}
回復 更多評論