c语言,换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少

c语言,换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少有一枚。输入金额,问有几种换发?针对每一种换法,输出各种面额硬币的数量和硬币的总数量。

#include <stdio.h>
void func(int n)
{
    int v1, v2, v5;
    int ,i, j, k;
    int num;
    v1 = 1;
    v2 = 2;
    v5 = 5;
    num = 0;
    for (i = 1; i <= n/v5; i++)
    {
        for (j = 1; j <= n/v2; j++)
        {
            for (k = 1; k <= n/v1; k++)
            {
                if ((i * v5 + j * v2 + k * v1) == n)
                {
                    printf("方法:1分数量: %d 2分数量: %d 5分数量: %d\n", k, j, i);
                    num++;
                }
            }
        }
    }
    printf("总共有 %d 种换法\n", num);
}
int main()
{
    scanf("%d", &n);
    if (n >= 8 && n <= 100)
    {
        func(n);
    }
    return 0 ;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-19
这个题数据比较大,需要动态规划来求解。。首先题目要求每种硬币至少有一枚,那么先取出1分,2分和5分各一枚,这样刚好是8分钱。题目描述说了这比钱大于8分,小于1元,所以没有影响,剩下有多少种方式就动态规划(DP)求解吧。不知道DP你会不会,不行的话我等下给你一下代码参考好了……先举样例说明一下,处理N=10,10-8=2,也就是付款=2分的方式有多少,那么明显就是2*1或者1*2两种
第2个回答  2016-04-01
我会编写 :)

但是,10分好少。。真心不值
第3个回答  2016-04-01
输入金额,问有几种换发?
针对每一种换法,输出各种面额硬币的数量和硬币的总数量。

输入 5 角 7 分,都应该输出什么?
楼主给个样例吧。本回答被网友采纳
相似回答