这一题应该是有问题的.... 题干说要控制成本,难道不是求最小值吗?最后给的例子却是求最大值... public int func(int[] nums, int m) { int n = nums.length; int[][] f = new int[n + 1][m + 1]; for (int i = 0; i <= n; i++) { Arrays.fill(f[i], Integer.MIN_VALUE); //如果求最小值,改成MAX_VALUE } int[] sub = new int[n + 1]; for (int i = 0; i < n; i++) { sub[i + 1] = sub[i] + nums[i]; } f[0][0] = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= Math.min(i, m); j++) { for (int k = 0; k < i; k++) { int val = (sub[i] - sub[k])*(sub[i] - sub[k]); f[i][j]=Math.max(f[i][j],f[k][j-1]+val); //如果求最小值,改成Math.min } } } return f[n][m]; }