C语言编程:将一笔钱(大于8分,小于1元,精确到分)换算成1分,2分和5分的硬币组合。

输入金额,问有几种换算方法?针对每一种换算方法,输出各种面额的硬币数量,要求每种硬币至少有一枚。输入输出示例:Input money:10 (钱数时10分)count = 2 (10分有两种换法)

这个题数据比较大,需要动态规划来求解。。首先题目要求每种硬币至少有一枚,那么先取出1分,2分和5分各一枚,这样刚好是8分钱。题目描述说了这比钱大于8分,小于1元,所以没有影响,剩下有多少种方式就动态规划(DP)求解吧。不知道DP你会不会,不行的话我等下给你一下代码参考好了……先举样例说明一下,处理N=10,10-8=2,也就是付款=2分的方式有多少,那么明显就是2*1或者1*2两种
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-19
源代码:
#include<stdio.h>
int main()
{
int count=0,money,i,j,m;
printf("Input money:");
scanf("%d",&money);
for(i=1;i<money;i++)
{
for(j=1;j<money/2;j++)
{
for(m=1;m<money/5;m++)
{
if((i+j*2+m*5)==money)
{
printf("%5d%5d%5d\n",i,j,m);
count++;
}
}
}
}
printf("count=%d\n",count);
return 0;
}
算法步骤多但容易理解,因为加起来不等于money不管就行。本回答被网友采纳
相似回答