愷龍 发表于 2021-3-16 13:29:54

硬币方案

问题描述

有 50 枚硬币,可能包括 4 种类型:1 元、5 角、1 角和 5 分。

已知 50 枚硬币的总价值为 20 元,求各种硬币的数量。

例如:2、34、6、8 就是一种方案。而 2、33、15、0 是另一个可能的方案,显然方案不唯一。

编写程序求出类似这样的不同的方案一共有多少种?

输入数据



输出要求

所有可能的方案,输出格式见输出样例。

输入样例

无输入

输出样例

1: 0 , 38 , 8 , 4

2: 1 , 36 , 7 , 6

3: 2 , 33 , 15 , 0

……
分析:
直接对四种类型的硬币的个数进行穷举。其中,1 元最多 20 枚、5 角最多 40 枚、1 角最多 50 枚、5 分最多 50 枚。

      另外,如果以元为单位,则 5 角、1 角、5 分会化成浮点型数据,容易计算出错。可以将 1 元、5 角、1 角、5 分变成 100 分、50 分、10 分和 5 分,从而全部采用整型数据处理。
代码:
#include <stdio.h>
int main()
{
    int a,b,c,d,cnt=0;
    for(a=0;a<=20;a++)
   for(b=0;b<=40;b++)
      for(c=0;c<=50;c++)
       for(d=0;d<=50;d++)
       {
                     if(a*100+b*50+c*10+d*5==2000 && a+b+c+d==50)
                     {
                            printf("%d: %d , %d , %d , %d\n",++cnt,a,b,c,d);
                     }
      }
    return 0;
} https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif
页: [1]
查看完整版本: 硬币方案