如何将此递归dp转换为迭代dp

时间:2020-03-28 08:03:46

标签: recursion memoization

我在使用迭代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));

最后,我的函数调用。

Original question

0 个答案:

没有答案