您的位置:首页 > 理论基础 > 数据结构算法

中国大学MOOC-陈越、何钦铭-数据结构-2016秋2题

2016-09-20 15:45 337 查看
这一道题就是求升序中的和的最大序列,并且找出序列的头和尾。如果存在相等的和,就按最前面的算。

题目https://pta.patest.cn/pta/test/1342/exam/4/question/18204

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include<algorithm>

using namespace std;

#define N 11000

#define Max 0x3f3f3f3f

int a
;

int main()

{

    int i, n, sum, b, first, last, result;

    while(~scanf("%d",&n))

    {

        b=last=first=0;

        scanf("%d",&a[0]);

        sum=result=a[0];

        for(i=1;i<n;i++)

        {

            scanf("%d",&a[i]);

            if(sum>=0)

            {

                sum+=a[i];

            }

            else

            {

                sum=a[i];

                b=i;

            }

            if(sum>result)

            {

                last=i;

                first=b;

                result=sum;

            }

        }

        if(result<0)

        {

            result=0;

            first=0;

            last=n-1;

        }

        printf("%d %d %d\n",result, a[first], a[last]);

    }

   return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐