马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 分,从而全部采用整型数据处理。
代码:#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;
}
|