兑换硬币(简单版,枚举)

这道题在ZQUOJ上的名字确实是枚举法,但是做的方法却是穷举法,刚开始我一直往枚举的方向思考,陷入一个死循环,如果有可以用枚举解决这道题的,麻烦在下面解答一二,感谢;
ps:最后这道题也是让我同学给我看答案我才知道这道题用穷举法的
Description
Alice喜欢收集东西(collect things)。她听说以前的硬币(coin)是用一种叫做镍的金属做的,而镍是稀有金属,自从国家回收旧硬币以后,现在变得很值钱了,所以她决定尽可能的收集旧硬币。每次找到卖家,她就把n分钱的纸币兑换为1分、2分和5分的硬币(至少各一枚)。假设兑换前后的资产面值不变(大人看Alice很可爱,都乐意跟她等价交换,所以Alice赚死了),问有多少种不同的换法?

Input
输入有多个测试用例,每个测试用例占一行。每个测试用例是一个正整数n( 8 ≤ n ≤ 100 ),表示一共要兑换多少金额的硬币。

Output
对每个测试用例,单独输出一行:一个整数x,表示一共有x种不同的换法。

Sample Input
13
8

Sample Output
4
1

#include<stdio.h>
int main(void)
{
    int n,x,i,j,k;
    while(scanf("%d",&n)!=EOF)
    {
        if(n>=8&&n<=100){
            for(i=1,x=0;i<=n/5;i++)
                for(j=1;j<=n/2;j++)
                 for(k=1;k<=n;k++)
                 if(5*i+2*j+k==n)
                 x++;
            printf("%d\n",x);
        }

    }return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_39915192/article/details/78634029
今日推荐