解题思路:
从头开始遍历数组,sum记录数组值的和,并用max记录最大值,如果sum大于max就更新max的值为sum,如果sum小于零就将sum记为0,因为如果num小于零的话就表示这段子列加上去只会降低后面子列的和不会提高后面子列的和,所以可以去掉这段子列,一个明显的动态规划题。
注意事项:
注意事项只有一个,不要用java!不要用java!同样的代码java改c++秒过,因为这个题就是LeetCode上的53题,为了验证是不是我没有考虑周全导致自以为的代码正确,我专门用我的java代码去LeetCode试了,通过了,换这个网站他就直接给我报运行错误,不是很能理解。
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] num = new int[n]; for (int i = 0; i < num.length; i++) { num[i] = scanner.nextInt(); } int max = Integer.MIN_VALUE; int sum = 0; for (int i = 0; i < num.length; i++) { sum = sum + num[i]; if(sum > max) { max = sum; } if (sum < 0) { sum = 0; } } System.out.print(max); } }
0.0分
5 人评分
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:624 |
回文数(一) (C语言代码)浏览:732 |
拆分位数 (C语言代码)浏览:1327 |
WU-拆分位数 (C++代码)浏览:779 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:669 |
蛇行矩阵 (C语言代码)浏览:527 |
C语言训练-亲密数 (C语言代码)浏览:682 |
1013题解浏览:557 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:557 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:588 |
黄志颖 2022-01-21 16:11:15 |
真的很离谱,错都不知道怎么错的
再道一次晚安 2022-05-24 17:36:36 |
一直报运行错误,搞得我以为我有病