1
我想知道如何確定下面的代碼的時間複雜度,使用自上而下的動態編程方法與memoization(請注意,我可以是任何整數值) :運行時複雜的遞歸內循環與記憶
solve(i, k, d) {
if (k >= d) {
A[i][k] = 0;
return 0;
}
if (i == 0) {
A[i][k] = 0;
return 0;
}
if (A[i][k] == null) {
for (int j = 0; j < k + 1; j++) {
A[i][k] = solve(i - 1, (k + 1 - j), d);
}
}
return A[i][k];
}
嗯基例。你錯過了一個return語句。但是,爲什麼不在'j = 0'時開始第一個分支並跟蹤發生了什麼 - 它在min(i,d-k)步驟後終止。 – MFisherKDX