我在使用迭代dp时遇到困难,我的解决方案是正确的,但是我的方法占用了很多内存,如果您能帮助我为此找到迭代dp,我将很高兴。
static int dir(int[] a, int i, int j) {
int s = 2 * a[i] - a[j];
if (s >= 0 || i>=j)
return 0;
else if (dp[i][j] != -1)
return dp[i][j];
else return dp[i][j] = Math.min((1 + dir(a, i + 1, j)), (1 + dir(a, i, j - 1)));
}
这是我的递归函数。
dp = new int[n][n];
for (int i = 0; i < n + 1; i++)
Arrays.fill(dp[i], -1);
这是我的初始化。
System.out.println(dir(a, 0, n - 1));
最后,我的函数调用。