时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:4643
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
题目描述
一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。
如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0
输入描述:
3,-5,7,-2,8
输出描述:
13
示例1
输入
-6,-9,-10
输出
0
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100010],n;
int main()
{
int len=0,flag=0,maxn=0;
while(cin>>n)
{
a[len++]=n;
if(getchar()=='\n')break;
}
for(int i=0;i<len;i++)
{
flag+=a[i];
if(a[i]>0){
maxn=max(max(flag,maxn),a[i]);
flag=max(flag,a[i]);
}
}
cout<<maxn<<endl;
return 0;
}