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