更新时间2018-11-08 12:41:30
我的代码:
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int p[n], temp[n];
int t=0, sum = 0;
for(int i=1; i<=n; i++){
cin >> p[i];
if(p[i] < 0)t++;
}
for(int i=1; i<=n; i++){
temp[i] = max(p[i],temp[i-1]+p[i]);
sum = max(sum, temp[i]);
}
if(t==n) cout << 0 << endl;
else cout << sum << endl;
return 0;
}
完整题目:
程序至少有一个问题
for(int i=1; i<=n; i++){
temp[i] = max(p[i],temp[i-1]+p[i]);
1.你的temp只定义了temp[n],它只能用temp[0]~temp[n-1]
当你的i为n时,用了temp[n],不标溢出了,程序能运行只是运气了
2.你的temp[0]没有初始化,它是随机数,当i=1时
temp[1]= max(p[1],temp[0]+p[1]);
若temp[0]有一个非0值,你的结果就不正确了