動態規劃 最少硬幣問題

2022-09-19 22:15:22 字數 1030 閱讀 2323

問題描述:設有n種不同面值的硬幣,各硬幣的面值存在於陣列t[1:n]中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins[1:n]中。對任意錢數0≤m≤20001,設計乙個最少硬幣找錢m的方法。

演算法設計:對於給定的1≤n≤10 ,硬幣面值陣列t和可以使用的各種面值的硬幣陣列coins,以及錢數m, 0≤m≤20001,計算找錢m的最少硬幣數。

資料輸入:由檔案input. txt提供輸入資料,檔案的第1行中只有乙個整數給出n的值,第2行起每行兩個數,分別是t[j]和coins[j]。最後一行是要找的錢數m。

結果輸出:將計算出的最少硬幣數輸出到檔案output.txt。問題無解時輸出-1。

輸入檔案示例input.txt:

1 32 3

5 3輸出檔案示例output.txt:

關注點:

1.多重揹包 (每個物品有固定次數上限)

2.求的是最少

3.揹包不能有空

**:

1 #include2 #include3

int maxint=2147483647;4

void getit(int* t,int* coin,int ncoin,int money,int **m)5

16}1718

for(int i=ncoin-1;i>=0;i--)

1928

if(m[0][money]==maxint)printf("-1"

);29

else printf("

%d\n

",m[0

][money]);

3031}32

33int

main()

3456

return0;

57 }

最少硬幣問題 動態規劃

需要找零x元,有n種面值硬幣,求找零最少需要硬幣個數的方法。這題如果用貪心演算法做,很可能無法得到最優解甚至無法無法找零,比如要找零11元,有三種硬幣,最優解是,用貪心就會先用10塊錢去消耗,那這題就無法完成。所以這題用動態規劃最合適,利用遞推和快取,動態規劃將問題拆分成若干個子問題,通過子問題的最...

動態規劃 最少硬幣問題

problem description 設有n種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins 1 n 中。對任意錢數0 m 20001,設計乙個用最少硬幣找錢m的方法。對於給定的1 n 10,硬幣面值陣列t和可以使用的...

最少硬幣問題 (動態規劃)

最少硬幣問題 time limit 1000 ms memory limit 65536 kib problem description 設有n種不同面值的硬幣,各硬幣的面值存於陣列t 1 n 中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins 1 n 中。對任意錢數0 ...