一個孩子正在用n個步驟跑上樓梯,並且可以一次走1步,2步或3步。現在編寫一個程序來計算孩子能夠爬樓梯的方式。如何獲得遞歸調用中的路徑
的解決方案看起來像這樣(DP可以用來節省時間)
public static int countDP(int n) {
if (n<0)
return 0;
else if (n==0)
return 1;
else {
map[n] = countDP(n-1) + countDP(n-2) + countDP(n-3);
return map[n]; }
}
現在的問題是如何讓這些路徑?例如對於n = 4,這個函數返回7,如何獲得所有可能的路徑? (在這個例子中是1111 - 121 - 112 - 211 - 31 - 13 - 22) 有沒有辦法通過改變當前的程序來做到這一點?
這是不是一個家庭作業的問題,它是由遞歸和開裂編碼訪書的動態規劃章未來 - 第9章 - 問題1.
這看起來像一個功課疑問... – IMSoP
你到目前爲止嘗試了什麼? –
@IMSoP,如果他們看起來像一個家庭問題複製/粘貼到這裏,我們應該還是不應該回答這樣的問題? – Roman