zoukankan      html  css  js  c++  java
  • P1115 最大子段和

    题目描述

    给出一段序列,选出其中连续且非空的一段使得这段和最大。

    输入输出格式

    输入格式:

    输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度。

    第2行包含N个绝对值不大于10000的整数A[i],描述了这段序列。

    输出格式:

    输入文件maxsum1.out仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。

    输入输出样例

    输入样例#1:
    7
    2 -4 3 -1 2 -4 3
    输出样例#1:
    4

    说明

    【样例说明】2 -4 3 -1 2 -4 3

    【数据规模与约定】

    对于40%的数据,有N ≤ 2000。

    对于100%的数据,有N ≤ 200000。

    对于这个题,我们可以考虑用贪心的做法来求解,首先我们可以认为,当一个数为负数时,当他加上一个数,仍然不如只算加上的那个数划算,所以我们可以将sum<0的时候吧sum变成0

    然后在每个解中求最大值

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 using namespace std;
     6 const int MAXN=200001;
     7 int a[MAXN];
     8 int main()
     9 {
    10     int n;
    11     scanf("%d",&n);
    12     for(int i=1;i<=n;i++)
    13         scanf("%d",&a[i]);
    14     int sum=0;
    15     int ans=-100000;
    16     for(int i=1;i<=n;i++)
    17     {
    18         sum+=a[i];
    19         ans=max(ans,sum);
    20         if(sum<0)sum=0;
    21     }
    22     printf("%d",ans);
    23     return 0;
    24 }
  • 相关阅读:
    【洛谷P1558】色板游戏
    【SCOI2010】序列操作
    Windows下MySQL下载安装、配置与使用
    Redis和MySQL数据同步及Redis使用场景
    python的设计模式之MVC模式
    python 面试真题
    python调用C语言
    一次跨域请求出现 OPTIONS 请求的问题及解决方法
    服务器宕机问题
    页面静态化
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6809398.html
Copyright © 2011-2022 走看看