Чтобы точно задать вам этот вопрос, в чем преимущество инициализации int max_val = Integer.MIN_VALUE над int max_val = price [i-1]?
Это может показаться тривиальной проблемой DP. Но мне нужна твоя помощь. Общие проблемы DP начинаются с инициализации max_val как Integer.MIN_VALUE. Я знаю, что это стандартный способ.
Но я понял, что установка max_val как price [i-1] не является неправильной.
например, я получил 22 с arr = {1 5 8 9 10 17 17 20} и cutRod (arr, 8).
Я получил 24 с arr = {3 5 8 9 10 17 17 20} и cutRod (arr, 8).
public class RodCutting {
public static void main(String[] args) {
int[] arr = new int[] {2, 5, 13, 19, 20};
int size = arr.length;
int result = cutRod(arr, size);
System.out.println("Maximum Obtainable Value is " + result);
}
private static int cutRod(int[] price, int n) {
int val[] = new int[n+1];
val[0] = 0;
for (int i = 1; i <= n; i++) {
int max_val = price[i-1]; // previously, int max_val = Integer.MIN_VALUE;
for (int j = 0; j < i; j++)
max_val = Math.max(max_val, val[j+1]+ val[i - j - 1]);
// previously, max_val = Math.max(max_val, price[j] + val[i - j - 1]);
val[i] = max_val;
}
return val[n];
}
}
Заранее спасибо.