首页 > 电脑

算法最大子段和的题,我的代码交到PTA上面有时能过有时不能过,想问一下存在什么问题

更新时间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;

}


完整题目:

算法最大子段和的题,我的代码交到PTA上面有时能过有时不能过,想问一下存在什么问题

程序至少有一个问题

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值,你的结果就不正确了

上一篇:我又来了,希望这次有大神能给我解答疑问。关于excel中subtotal函数问题

下一篇:汇编语言中系统功能调用有什么作用?返回dos系统,该如何进行系统调用?若不返回dos系统会出现什么情况?