小白白的 发表于 2020-4-9 13:13:37

小白疑问

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

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

人造人 发表于 2020-4-9 13:16:24

你倒是自己写呀,你看别人写的答案,对自己不会有太大的提升

寓捷 发表于 2020-4-9 16:35:54

你可以用三个for循环嵌套,x y z分别表示1,2,5元的数量
for z从20开始到0
y从50开始到0,x从100开始到0
如果符合条件,就输出结果

love_qj 发表于 2020-4-9 17:47:47

#include <stdio.h>

int main(void)
{
        int i, j, k, money;
       
        printf("请输入被替换的面值:");
        scanf("%d", &money);
       
        for(i = money / 5; i > 0; i--)
        {
                for(j = money / 2; j > 0; j--)
                {
                        for(k = money; k > 0; k--)
                        {
                                if((k + 2 * j + i * 5) == money)
                                {
                                        printf("5元需要:%d, 2元需要:%d, 1元需要:%d\n", i, j, k);
                                }
                        }
                }
        }
       
        return 0;
       
        return 0;
}

小白白的 发表于 2020-4-9 19:32:55

#include <stdio.h>
intmain(){
int x,y;
int i,j=0,k=0,h=0,g=0;
scanf("%d",&i);
j=i/5;
k=i/2;
for(x=j;x>0;x--){
        for(y=k;y>0;y--){
                h=i-5*x-2*y;
               
                        if(h>0){
                                g++;
                                printf("%d %d %d\n",x,y,h);
                       }
                      
       }
}
printf("%d\n",g);
}

小白白的 发表于 2020-4-9 19:35:23

自己做出来了,只是还不清楚怎么在for循环里打印由大到小,刚刚看到大佬的解答,秒懂!
感谢!

howzyao 发表于 2020-4-9 20:42:23

三层for...
能不能层层写注释一下?
让我们观众也学习学习你的思想.
页: [1]
查看完整版本: 小白疑问