日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java动态编程解决分硬币问题,动态编程硬币更改问题

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java动态编程解决分硬币问题,动态编程硬币更改问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在理解各種問題的動態編程解決方案時遇到問題,特別是硬幣找零問題:

“給定值N,如果我們要N分錢找零,并且我們有無限數量的S = {S1,S2,..,Sm}硬幣的供應,我們可以用幾種方法進行找零?硬幣沒關系。

例如,對于N = 4和S = {1,2,3},有四個解:{1,1,1,1},{1,1,2},{2,2},{1, 3}。因此輸出應為4。對于N = 10且S

= {2,5,3,6},有五個解:{2,2,2,2,2},{2,2,3,3}, {2,2,6},{2,3,5}和{5,5}。因此輸出應為5。”

此問題還有另一個變體,解決方案是滿足該數量的最小硬幣數量。

這些問題看起來非常相似,但是解決方案卻非常 不同 。

進行更改的可能方法的數量:最佳的子結構為 DP(m,n)= DP(m-1,n)+ DP(m,n-Sm)

,其中DP是所有硬幣的解數,直至第m個硬幣,金額= n。

最小數量的硬幣:最優的子結構是 DP [i] = Min {DP [i-d1],DP [i-d2],… DP [i-dn]} + 1

其中,i是總量和d1..dn代表每種硬幣面額。

為什么第一個需要二維數組,而第二個需要1-D數組呢?為什么更改方式的最優子結構不是“ DP [i] = DP [i-d1] + DP [i-d2] +

… DP [i-dn] ”,其中DP

[i]是我可以通過硬幣獲得數量的方法的數量。這對我來說聽起來合乎邏輯,但會產生錯誤的答案。為什么在此問題中需要硬幣的第二維,而在最小金額問題中卻不需要?

問題鏈接:

提前致謝。我訪問的每個網站僅說明該解決方案的工作原理,而不說明其他解決方案為何不工作。

總結

以上是生活随笔為你收集整理的java动态编程解决分硬币问题,动态编程硬币更改问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。