第三题DP没爆,但是一直都是50%,看了四十分钟没找到啥别的改进方案。 k++; for (int i = 1; i <= n; i++) { if (values[i - 1] <= m) { for (int j = 1; j <= n; j++) { dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1] + values[i - 1]); dp[i][j] = Math.max(dp[i][j], dp[i - 1][j]); } } else { for (int j = 1; j < k; j++) { dp[i][j] = Math.max(dp[i][j], dp[i - 1][j]); } for (int j = k; j <= n; j++) { dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - k] + values[i - 1]); dp[i][j] = Math.max(dp[i][j], dp[i - 1][j]); } for (int j = k - 1; j > 0; j--) { dp[i][n] = Math.max(dp[i][n], dp[i - 1][n - j] + values[i - 1]); } dp[i][n] = Math.max(dp[i][n], dp[i - 1][n]); } } 有没有做出来的老哥给讲讲思路的。