算法学习_动态规划

1、有x美分钱,用1美分、5美分、10美分、25美分来组合,有多少种组合方式:

用方式i,表示可以选择前i种美分;

用j表示可以组合成j美分;

用T(i,j)表示在可以选择前i种美分时,组合成j美分的组合方式;

建表如下:

 

 151015202530354045
1(1美分)1111111111
2(1、5美分)12345678910
3(1、5、10美分)124691216202530
4(1、5、10、25)124691318243139

 注意:1) 像2、3、4和1;或者6、7、8、9和5,都可以视为相同。6、7、8、9只是在5的基础上多加了几张一美分的,在决策表中就是重复。如果一个数不能被5整除,则比它小的数中最大的一个能被5整除的数的组合方式和这个数本身的组合方式也一样;2)最后一行可以视为最终结果;

3) j是最小的1美分的n倍,1、2、3、4、5、、、但如1)所说,选择j是5的倍数;

4) 45美分的组合方式:只使用(1、5、10美分)的情况有30种,加上必须使用25美分的情况。45-25=20;则使用前四种方式构成20美分的情况有9种,故30+9=39。

5) T(i,j)=T(i-1,j)+T(i,j-c(i)),其中c(1)=1;c(2)=5;c(3)=10;c(4)=25;

2、不按顺序选择时,比如只能按顺序选择5、10、1、25情况:

 151015202530354045
1(5美分)1111111111
2(5、10美分)12345678910
3(5、10、1美分)124691216202530
4(5、10、1、25)124691318243139

 答案是一样的,T(3,10)=T(2,10)+T(3,9),注意T(3,9)=T(3,5)=2;

3、随机给出一个整数串;得到某几个(0<n)数相加结果相等的组合方式。如1、3、8、4、2、6,得到1+3+2=4+2=6,这三种组合方式:

 123456789101112
1(2)010000000000
2(2、4)010101000000
3(2、4、1)111111100000
4(2、4、1、5)111122211111
5(2、4、1、5、8)111122222222
6(2、4、1、5、8、6)111123333344

 注意区分与1)的区别:

a、i还是表示只选择前i个数字,j是表示相加所得和。T(i,j)表示选择前i个数字时,相加得到和j的组合方式。

b、T(i,j)=T(i-1,j)+T(i-1,j-c(i));(j>c(i))注意与上面不同,因为这里新加入的数字不能重复使用。

     T(i,j)=T(i-1,j)+1;(j=c(i))

     T(i,j)=T(i-1,j);(j<c(i))

其中,c(1)=2;c(2)=4;c(3)=1;c(4)=5;c(5)=8;c(6)=6

转载于:https://www.cnblogs.com/wjhkxcz/p/3200972.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值