鱼C论坛

 找回密码
 立即注册
查看: 2641|回复: 0

[技术交流] 硬币方案

[复制链接]
发表于 2021-3-16 13:29:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题描述

有 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 分,从而全部采用整型数据处理。
代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a,b,c,d,cnt=0;
  5.     for(a=0;a<=20;a++)
  6.      for(b=0;b<=40;b++)
  7.       for(c=0;c<=50;c++)
  8.        for(d=0;d<=50;d++)
  9.        {
  10.                      if(a*100+b*50+c*10+d*5==2000 && a+b+c+d==50)
  11.                      {
  12.                             printf("%d: %d , %d , %d , %d\n",++cnt,a,b,c,d);
  13.                      }
  14.         }
  15.     return 0;
  16. }
复制代码

                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 21:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表