动态规划问题中找零问题 --C语言实现
生活随笔
收集整理的這篇文章主要介紹了
动态规划问题中找零问题 --C语言实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.前言
今天又上了一節算法設計與分析課,頭疼,學了動態規劃的思想解決最值問題,行了,不啰嗦了,直接上干貨干吧!!!
二.內容
題目:
三.分析過程
符合動態規劃問題最值問題,故用動態規劃來求解。
1.確定狀態
本題中用一維數組就行,a[i]代表解決問題所用的最少硬幣數(a[i]詳見后續代碼)
當最后一步硬幣面額可以取2,5,7時。前幾枚硬幣(k-1枚硬幣)的幣數為f(25),f(22),f(20).總次數就為f(25)+1,f(22)+1,f(20)+1中最小的值了。(f(25),f(22),f(20)只是變量,目前次數不確定)
2.轉移方程(就是將上面的思路一般化)
3.確定初始條件和邊界情況
f(0)=0很好理解,買一本需要0元,還需要付硬幣嗎?自然是硬幣數自然是0,f(負數)=無窮大,也好理解,當買一本書需要負元時,這種情況當然不存在,(你買一本書,別人還倒貼你錢,孩子你想多,這種美事當然不存在),所以這種情況不可以取,又是用求三個的最小值,所以用正無窮表示。
4.計算順序
(我們倒推,當然正著來求解啊,一般來說,動態規劃問題都是O(n),用數組保留原問題的解)
四.效果圖(本例用10000表示無窮大)
五.代碼(這是我喜歡的一部分,不知道怎么了,今天居然廢話了一堆,噼里啪啦講了一堆,行了,不繼續廢話了,直接肝)
總結
以上是生活随笔為你收集整理的动态规划问题中找零问题 --C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux报错:/etc/sudoers
- 下一篇: USACO-Section2.1 Hea