零钱问题

本关任务:将一面额为10元倍数的整钱(<=100元)换成1元、2元和5元的零钱组合(每种面值都要有)。输入要换的面额(如10元),输出所有可能的换法及其数量。

请注意,由于结果集的种类比较多,为了匹配和通过测试集,要求你的输出要依次按5元、2元、1元的数量从多到少的组合!

include<stdio.h>
int main(){
    int a,b,c,money,sum=0;
    scanf("%d",&money);
    for(a=20;a>=1;a--){
        for(b=50;b>=1;b--){
            if(money>(a*5+b*2)){
                printf("%d %d %d\n",a,b,money-a*5-b*2);
                sum++;
            }
        }
    }
    
    printf("%d",sum);
    


    return 0;
}      //这是理想的代码

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#include<stdio.h>             //这是我敲的代码,没有考虑到一元钱可以用减法去求的3条件,,造成代码不够简洁
int main()
{ int n,stdio=0; //这里定义n是一个10的倍数
int i,j,k;
scanf("%d",&n);
for(k=19;k>=1;k--)
{
for(j=47;j>=1;j--)
{
for(i=93;i>=1;i--)
{if(n==i*1+j*2+k*5){ ///在这里注意循环的开始是最大的面值,k
printf("%d %d %d\n",k,j,i);
stdio=stdio+1;}}
}

} printf("%d",stdio);
return 0;
}

 

posted @ 2020-11-27 21:36  ctfliar  阅读(410)  评论(0)    收藏  举报