該算法應該找到只使用一角硬幣,五分硬幣和便士,就可以對輸入數量進行改變的方法數量。我的做法是採用分而治之的策略,通過找出用最大的硬幣進行變化的方式數量,一角硬幣以及不用一角硬幣就能做出改變的方法數量。我爲這個算法編寫了一個實現,它正確地解決了1 ... 14輸入的問題,但是當輸入等於或大於15時,返回的結果是不正確的。顯然,我的算法是錯誤的,並且想知道需要做些什麼修改來修復代碼,以及我的方法是否是一個適當的分治法。用有限的硬幣進行改變的分而治之算法
的代碼如下:
public static int makeChange(int n) {
if(n < 0)
return 0;
else {
int sum = makeChange(n-10) + makeChange(n-5) + 1;
return sum;
}
}
非常感謝。
是什麼'makeChange2'樣子?張貼它也。 – Raptor
動態規劃比分而治之更適合這個問題。 – Kunal
*「當輸入等於或大於15時,返回的結果不正確。」*您獲得了什麼結果?你期望的結果是什麼? (或者你只是想給我們留下「不正確的」??)。我還指出,你不會在你的帖子中的任何地方提問。 – abelenky