最少硬幣問題 動態規劃

2021-07-12 05:19:49 字數 943 閱讀 5975

需要找零x元,有n種面值硬幣,求找零最少需要硬幣個數的方法。

這題如果用貪心演算法做,很可能無法得到最優解甚至無法無法找零,比如要找零11元,有三種硬幣,最優解是,用貪心就會先用10塊錢去消耗,那這題就無法完成。

所以這題用動態規劃最合適,利用遞推和快取,動態規劃將問題拆分成若干個子問題,通過子問題的最優解不斷往上遞推得出問題的最優解,這比貪心演算法慢,但得到的答案跟準確。

#include

void mincoin(int cost, int cointype, int typenum);

void main()

; //紙幣面額

// int cointype[2] = ; //test

const

int typenum = sizeof(cointype) / sizeof(cointype[1]);//種類數量

//int coinused[typenum + 1]; coinused[0] = 0;// 1-cost 找零各需要多少硬幣

mincoin(cost, cointype, typenum);

}void mincoin(int cost, int cointype, int typenum)}}

/* coinused[i]==9999999? printf("無法找零\n") : printf("找%d塊錢最少需要%d個硬幣\n",i, coinused[i]); 測試*/

動態規劃 最少硬幣問題

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 ...

動態規劃 最少硬幣問題

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