硬币表示

题目描述
有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。
给定一个int n,请返回n分有几种表示法。保证n小于等于100000,为了防止溢出,请将答案Mod 1000000007。
测试样例:
6
返回:2

题目分析:这道题可以用递归做出来,而且只需要返回结果。这道题中每次要知道的是剩余硬币的数量,当剩余硬币数量不能再分时(剩一个)时,这就算一种分法。每次分的时候变的是硬币的面值。
总结:这种类似树的结构的遍历一般使用递归比较方便。

int fun(int n, int coin)
    {
        int nextcoin=0;
        switch(coin)
        {
        case 25:
            nextcoin=10; break;
        case 10:
            nextcoin=5; break;
        case 5:
            nextcoin=1; break;
        case 1:
            return 1;
        }
 
        int res=0;
        for(int i=0;i*coin<=n;i++)
        {
            res+=fun(n-i*coin, nextcoin)%1000000007;
        }
        return res%1000000007;//%1000000007
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 咳咳..先说一段废话..最近开始看SICP这本书,正看到了换零钱的部分。看到里面那么多简明生动的例子,还有作者的细...
    Seventie阅读 5,222评论 6 18
  • 即使意识内收没有到位,每一步也要细心体会,反复练习。因为昨天的感受今天不一定再能准确的找到。 坐下...
    静_ccba阅读 173评论 0 1
  • 祷告 愿在活着的每一天都充实不违背自己的心愿 曾和好友说过 我能给的最好的祝福不过是 祝你们一生平安喜乐 无疾而终...
    显弹阅读 217评论 0 0
  • 妈妈总是说我,读的书太少,心浮又气燥。和我相处的人都说我性格好,开朗又阳光。而我只是一直表现得像个欢脱的小二...
    潇潇暮雨子规啼_阅读 314评论 0 0
  • 被举报的事情还没有完结,我又听到了一个关于医患关系的新的定义,正常情况下,举报以后,市里通知卫计局,局里通知...
    古典悠梦阅读 414评论 2 2