動態規劃 最少硬幣問題

2021-09-12 19:41:24 字數 605 閱讀 5694

problem description

設有n種不同面值的硬幣,各硬幣的面值存於陣列t[1:n]中。現要用這些面值的硬幣來找錢。可以使用的各種面值的硬幣個數存於陣列coins[1:n]中。

對任意錢數0≤m≤20001,設計乙個用最少硬幣找錢m的方法。

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

input

輸入資料第一行中只有1個整數給出n的值,第2行起每行2個數,分別是t[j]和coins[j]。最後1行是要找的錢數m。

output

輸出資料只有乙個整數,表示計算出的最少硬幣數。問題無解時輸出-1。

sample input

3

1 32 3

5 318

sample output

5
code:

#include #define inf 0x3f3f3f3f

using namespace std;

int main()}}

printf("%d\n", dp[m]}

最少硬幣問題 動態規劃

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

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

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

動態規劃 最少硬幣問題

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