第一题的29-36的代码可读性有点差了,其实就是计算dp[]中连续最大值.用下面代码可能更易阅读点 int sum = 0; for(int k=0;k<n;k++){ sum += dp[k]; ans = Math.max(sum,ans); if(sum <= 0 )sum=0; }