在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
输入格式
第一行输入一个不超过1000的整数n。
第二行输入n个整数A[i]。
输出格式
第一行输出一个整数,表示最大的和。
样例输入
3 1 1 -2
样例输出
2
#include<iostream>
using namespace std;
int main() {
int num;
cin >> num;
int max = 1 << 31;
int mid= 0;
for (int i = 0; i < num; i++) {
int d;
cin >> d;
if (d + mid > max) {
max = d + mid;
}
if (mid+d < 0) {
mid = 0;
}else
mid += d;
}
cout << max;
}
0ms | 236kB | c++ |
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
int max=Integer.MIN_VALUE;
int mid=0;
int num=scan.nextInt();
for(int i=0;i<num;i++){
int buffer=scan.nextInt();
if(buffer+mid>max){
max=buffer+mid;
}
if(buffer+mid<0){
mid=0;
}else{
mid+=buffer;
}
}
System.out.println(max);
}
175ms | 19800kB | java |