Я борюсь с итеративным дп, мое решение верное, но мой подход требует много памяти, я буду рад, если вы поможете мне найти итеративный дп для этого.
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));
Наконец, мой вызов функции.
Исходный вопрос