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

(爱问答)

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

我的代码:

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

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

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

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?