标题:找零钱·
取消只看楼主
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
结帖率:100%
已结贴  问题点数:20 回复次数:2 
找零钱·
描述
我们知道人民币有1、2、5、10、20、50、100这几种面值。
现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。
比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。
输入
输入有多组,每组一行,为一个整合n。
输入以0结束。
输出
输出该面额有几种表示方法。
样例输入
1
4
0
样例输出
1
3
提示
如果我告诉你,这题是用暴力穷举的方法,你能通过吗?^_^
题目链接:http://acm.tzc.
我自己的代码
程序代码:
#include"stdio.h"
int f2(int n)
{
    return n/2+1;
}
int f5(int n)
{
    int su,i;
    for(i=0,su=0;i*5<=n;i++)
    su+=f2(n-i*5);
    return su;
}
int f10(int n)
{
    int i,su;
    for(i=0,su=0;i*10<=n;i++)
    su+=f5(n-i*10);
    return su;
}
int f20(int n)
{
    int i,su;
    for(i=0,su=0;i*20<=n;i++)
    su+=f10(n-i*20);
    return su;
}
int f50(int n)
{
    int i,su;
    for(i=0,su=0;i*50<=n;i++)
    su+=f20(n-i*50);
    return su;
}
int f100(int n)
{
    int i,su;
    for(i=0,su=0;i*50<=n;i++)
    su+=f50(n-i*100);
    return su;
}
int main()
{
    int i,n,su,s;
    while(scanf("%d",&n),n)
    {
        s=1*(n<5)+2*(n>=5&&n<10)+3*(n>=10&&n<20)+4*(n>=20&&n<50)+5*(n>=50&&n<100)+6*(n>=100);
        switch(s)
        {
            case 1:su=f2(n);break;
            case 2:su=f5(n);break;
            case 3:su=f10(n);break;
            case 4:su=f20(n);break;
            case 5:su=f50(n);break;
            case 6:su=f100(n);break;
        }
        printf("%d\n",su);
    }
    return 0;
}

思路就是穷举
我给的输入
5
4
10
11
我认为前10个我没有错
但他说的答案错。。。。求大神解释
搜索更多相关主题的帖子: 人民币 暴力 
2013-04-23 19:25
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
得分:0 
这帖就沉了?是题目太无聊了。还是太麻烦了?
2013-04-25 08:10
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
得分:0 
回复 5楼 yuyilahanbao
这是一个ACM题目
有在线评测系统
我把题目发上去
它给我的回复
是错误答案
就是说我写的错的
2013-04-25 20:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405265-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.823395 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved