解题思路:
从头开始遍历数组,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语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:936 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:916 |
字符串的输入输出处理 (C语言代码)浏览:1007 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:613 |
C语言程序设计教程(第三版)课后习题10.1 (C++代码)浏览:502 |
1250题解浏览:561 |
C语言训练-斐波纳契数列 (C语言代码)浏览:509 |
【计算两点间的距离】 (C语言代码)浏览:855 |
用getchar()函数接收字符,正序输入为什么会倒序输出浏览:741 |
黄志颖 2022-01-21 16:11:15 |
真的很离谱,错都不知道怎么错的
再道一次晚安 2022-05-24 17:36:36 |
一直报运行错误,搞得我以为我有病