問題描述:設有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 #include3int 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 ...