SICP 换零钱问题

原创 2016年06月01日 01:57:13
书上提到了迭代的算法,想到了完全背包,但是lisp功底太差,实现不了。
(define (count-change amount)
  (cc amount 5))

(define (cc amount kinds-of-coins)
  (cond ((= amount 0) 1)
        ((or (< amount 0) (= kinds-of-coins 0)) 0)
        (else (+ (cc amount
                     (- kinds-of-coins 1))
                 (cc (- amount
                        (first-denomination kinds-of-coins))
                     kinds-of-coins)))))

(define (first-denomination kinds-of-coins)
  (cond ((= kinds-of-coins 1) 1)
        ((= kinds-of-coins 2) 5)
        ((= kinds-of-coins 3) 10)
        ((= kinds-of-coins 4) 25)
        ((= kinds-of-coins 5) 50)))

(count-change 100)
版权声明:本文为博主原创文章,未经博主允许不得转载。

SICP-换零钱方法的统计

【问题】 现有半美元、四分之一美元、10美分、5美分和1美分共5种硬币。若将1美元换成零钱,共有多少种不同方式? 【思路】 采用递归过程,假定我们所考虑的可用硬币类型种类排了某种顺序,于是就有下...

换零钱问题迭代解法

搬运自 http://blog.sina.com.cn/s/blog_7daf3d040101od8p.html 问题来源 SICP 线性递归和迭代(尾递归) 树形递归(优化尽...

换零钱问题

现有币值为1分,5分,10分,25分和50分的硬币,各种硬币可以任意取整数枚,也可以不取,问有多少种方法可以使所取的硬币的总币值为1元。这是个典型的组合数学问题,可以构造生成函数,然后求出某项的系数来...

数字的拆分问题和换零钱问题

一、(1)输入n,和k,问将n用1到k这k个数字进行拆分,有多少种拆分方法。例如:n=5,k=3 则有n=3+2, n=3+1+1, n=2+1+1+1, n=2+2+1, n=1+1+1+1+1这...

换零钱程序

  • 2011年11月22日 16:24
  • 3.66MB
  • 下载

51nod 1101 换零钱

1101 换零钱 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 N元钱换为零钱,有多少不同的换...

换零钱---编程马拉松

换零钱 时间限制:1秒 空间限制:32768K 题目描述 考虑仅用1分、5分、10分、25分和50分这5种硬币支付某一个给定的金额。例如需要支付11分钱,有一个1分和一个10分、一个1分和一...
  • lyy_hit
  • lyy_hit
  • 2015年07月12日 16:49
  • 601

51nod 1101 换零钱 (0-1背包,DP)

1101 换零钱 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 N元钱换为零钱,有多少不同的换...

小P的故事——神奇的换零钱(递推式完全背包)

think: 1上午比赛自己一直卡在了这个题目上,自己一直在用递推的方法找递推方程,下午补题问身边同学是要用递推式完全背包来做,因为递推的子问题是有序的,而这个题目其子问题是无序的,而且符合一种最优...

小P的故事——神奇的换零钱

think: 1上午比赛自己一直卡在了这个题目上,自己一直在用递推的方法找递推方程,下午补题问身边同学是要用递推式完全背包来做,因为递推的子问题是有序的,而这个题目其子问题是无序的,而且符合一种最优...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SICP 换零钱问题
举报原因:
原因补充:

(最多只允许输入30个字)