private int dynamicAlgorithm(int n) {
int[] cache = new int[n + 1];
for (int i = 1; i <= n; i++) {//钢条规模从1到n
int temp = Integer.MIN_VALUE;
for (int j = 1; j <= i; j++) {//不同切法中寻找最佳值。
temp = Math.max(temp, price(j) + cache[i - j]);
}
cache[i] = temp;
}
return cache[n];
}
private int price(int i) {
return i * i;
}