【問題描述】有n種不同面值的硬幣,各硬幣面值存於陣列t[1:n];現用這些面值的錢來找錢;各面值的個數存在陣列num[1:n]中。
【程式設計任務】對於給定的1<=n<=10,硬幣面值陣列、各面值的個數及錢數m,0<=m<=2001,程式設計計算找錢m的最少硬幣數。
input : 第乙個數字n,後面n行每行兩個數,面值t[i],面值個數num[i];最後是錢數m。
output:最少硬幣數。
sample intput : 3
1 32 3
5 3 18
sample output: 5
【分析】:一看大家都會覺得最優子結構是dp(m)=max,但是面值的個數在**?不好考慮。我開始以為狀態跟面值、個數、錢數三個因素有關,應該要有個三維陣列來儲存狀態,其實不然,那樣的話動態規劃的優勢就沒啦!對動態規劃的理解還在「成長階段」呀!廢話少說,切入正題!
先看狀態方程,狀態方程一出,程式應該就ok了!
用mianzhi[1:m]和mian_zhi[1:m]來表示面值為i時的最少硬幣數。tv[1:n]來表示某種面值的所有錢數,即tv[i]=t[i]*num[i];
mianzhi[i]=min t表示面值為t[j]的個數
t[j]<=i<=m; 2<=j<=n; (j = 1 另行考慮,動態規劃必須的起點)
當j=1時mianzhi[i]=mian_zhi[i]=i/t[1]; (1<=i<=m;i%t[1]==0&&i<=tv[1])
mianzhi[0]=mian_zhi[0]=0;
最少硬幣問題
本文內容遵從 cc版權協議 設有n 種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數與面值分別存於陣列coin 1 n 和t 1 n 中。對任意錢數0 m 20001,設計乙個用最少硬幣找錢m的方法,對於給定的1 n 10,硬幣面值陣列t...
最少硬幣問題
問題描述 設有n 種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬 幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins 1 n 中。對任意錢數0 m 20001,設計乙個用最少硬幣找錢m的方法。程式設計任務 對於給定的1 n 10,硬幣面值陣列t和可以使用的各種面值的硬...
最少硬幣問題
problem description 設有n種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins 1 n 中。對任意錢數0 m 20001,設計乙個用最少硬幣找錢m的方法。對於給定的1 n 10,硬幣面值陣列t和可以使用的...