求助,站外题!
  • 板块题目总版
  • 楼主NeoImaging
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/2/12 22:22
  • 上次更新2023/10/28 08:43:27
查看原帖
求助,站外题!
678013
NeoImaging楼主2022/2/12 22:22

一道xjoi上的题,点这里

也可以直接访问这个地址 https://xjoi.net/problem/3277

注意:你在xjoi上的等级至少要达到1级22段,否则就会被彩虹·学军·猫暴击!

话不多说,放题!

时间 :0.2s 空间:32M

最大子段和

描述:

数组中子段的最大总和。

例如,1,2,3,-5,4,3,-6 中的最大子段总和是

1+2+3+(-5)+4+3 = 8

输入格式:

第一行输入整数n

第二行输入n个整数

输出格式:

整数,表示该数组的最大子段和

样本输入:

7 1 2 3 -5 4 3 -6

样本输出:

8

约定:

1<=n<=100000,−10000<=序列元素<=10000

提示:请各位大佬能用鄙人理解的方法去做,在此表示感谢!

(如果能改正我的代码就更好了)

附:我的错误代码(90分)

#include<iostream>
#include<cstdio>
using namespace std;
int x[100005];
int main()
{
    int n,max,flag;
	long long p=0,q=0;
	cin>>n;
    for(int i=1;i<=n;i++)
        scanf("%d",&x[i]);
    flag=1;
    for(int i=1;i<=n;i++)
	{
        if(x[i]>=0) 
		{
            flag=0;
			break;
        }
    }
    if(flag==1)
	{
        cout<<0;
        return 0;
    }
    for(int i=1;i<=n;i++)
    {
        if(p+x[i]<0) 
			p=0;
        else
		{
            p+=x[i];
            if(p>q) 
				q=p;
        }
    }
    cout<<q;
    return 0;
}

再次对帮助的博主表示感谢!

2022/2/12 22:22
加载中...