0
假設我們現在正在解決可以通過動態編程解決的典型問題 - 獲取可能的硬幣組合的數量以進行更改。如何用大型輸入進行動態編程
Memorizer mem = new Memorizer();
int[] coins = { 100000, 8534, 5935, 291, 76, 51, 30, 29, 7, 5 }
......
int getNum(int money, int idx) {
if(idx == coins.length - 1) {
if(money % coins[idx] == 0)
return 1;
else
return 0;
}
int found = mem.find(money, idx);
if(found != null)
return found;
int num = 0;
for(int i = 0; i <= (money/coins[idx]); i++)
num += getNum(money - i * coins[idx], idx + 1);
mem.remember(money, idx, num);
return num;
}
但是,如果這筆錢非常大,大約20億美元,那麼很難記住所有的中間結果。我怎樣才能用非常大的輸入來解決問題?請幫幫我。謝謝。