记录踩坑C语言。。。。
Description
把一元钞票换成一分、二分、五分硬币,要求至少有m枚一分,n枚二分和k枚五分,m+2n+5k<=100,有哪些种换法?
Input
m,n,k
Output
五分、二分、一分硬币的个数,以空格隔开,每种方案一行
Sample Input
100,0,0
Sample Output
0 0 100
HINT
搞不懂,到底哪里有问题。。。。。
贴个代码
#include<stdio.h> int main() { int m,n,k,i,j,x; scanf("%d,%d,%d",&m,&n,&k); for(i=m;i<=100;i++) for(j=n;j<=50;j++) for(x=k;x<=20;x++) if(i+2*j+5*x==100)//<=和==都试过了,过不了 printf("%d %d %d\n",x,j,i); }
经过一个大神提醒,考虑到黑盒测试的问题,可能是循环结构不一致导致的答案出错。
2020年11月2日更新
#include<stdio.h> int main() { int m,n,k,i,j,x; scanf("%d,%d,%d",&m,&n,&k); for(x=k;x<=20;x++) for(j=n;j<=50;j++) for(i=m;i<=100;i++) if(i+2*j+5*x==100) printf("%d %d %d\n",x,j,i); }
可尝试更正后代码,两组输出结果顺序不一致。
发表评论