Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434624
  • 博文数量: 103
  • 博客积分: 5010
  • 博客等级: 大校
  • 技术积分: 971
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-11 17:22
文章分类
文章存档

2008年(77)

2007年(26)

我的朋友

分类: C/C++

2008-05-20 01:12:19

问题:

设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些硬币来找钱。可以使用的各种面值的硬币个数不限。

当只用硬币面值T[1],T[2],……T[i]时,可以找出钱数j的最少硬币个数记为

C(i,j).若只用这些硬币面值,找不出钱时,记C(i,j)=∞。给出C(i,j)的递归表达式及其初始条件。1<=i<=n,1<=j<=L.

 

解决:

递归式子:用c[i][j]存储最后结果;

c[i][j] = min(c[i-1][j], c[i][j-t[i]]+1) (j>=t[i])

c[i][j] = c[i-1][j] (j

初始条件:

c[1][j] = j%t[1] (j%t[1] == 0)

c[1][j] = ∞ (j%t[1] != 0)

阅读(3015) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~