码迷,mamicode.com
首页 > 编程语言 > 详细

动态规划算法

时间:2020-07-01 16:15:32      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:nbsp   状态   算法   表示   选择   规划   硬币   最优   一个   

1、最优子结构

有面值分别为1,3,5的三种硬币若干,需要凑成11元最少需要多少硬币,凑成n元最少需要多少硬币?

凑成0元需要0个硬币 //d(0)=0

凑成1元需要1个1元硬币 //d(1)=d(0)+1

凑成2元需要2个1元硬币 //d(2)=d(1)+1

凑成3元需要3个1元硬币或者1个3元硬币,那么我们选择1个3元硬币 //d(3)=min{d(2)+1,d(3-3)+1}

凑成4元需要1个3元硬币,1个1元硬币 //d(4)=d(3)+1;

凑成5元需要1个3元硬币,2个1元硬币或者1个5元硬币,那么我们选择1个5元硬币 //d(5)=min{d(4)+1,d(5-5)+1},为d(4)+1 =  1个3元硬币,2个一元的硬币,d(2)+1,也就是一个3元硬币,2个一元硬币,d(0)+1一个一元硬币

。。。。

抽离出来d(i)=min{ d(i-1)+1,d(i-vj)+1 },其中i-vj >=0,vj表示第j个硬币的面值;因为只有1张面值vj的加上剩余的d(i-vj)就可以算出所有有可能的解,做一个

首先要抽离出最优子结构,其中d(i-1)+1,d(i-vj)+1

2、边界

d(0)

3、状态转移公式

d(i)=min{ d(i-1)+1,d(i-vj)+1 }

 

动态规划算法

标签:nbsp   状态   算法   表示   选择   规划   硬币   最优   一个   

原文地址:https://www.cnblogs.com/xiaofeiyang/p/13219543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!