zoukankan      html  css  js  c++  java
  • 最大和

    问题描述】
    n个数围成一圈,要求从中选择若干个连续的数(注意每个数最多只能选一次)加起来,问能
    形成的最大的和。
    【输入】
    输入文件为input.txt。
    第一行输入n,表示数字的个数。
    第二行输入这n个数字。
    【输出】
    输出文件为output.txt 。
    共1行,为最大和。
    【输入输出样例】
    input.txt
    8
    2 -4 6 -1 -4 8 -1 3
    output.txt
    14
    【数据范围】
    对于40%的数据,1 ≤ n ≤ 300;
    对于60%的数据,1 ≤ n ≤ 2000;
    对于100%的数据,1 ≤ n ≤ 100000,答案在int(pascal 是longint)范围内。

    分两种情况,

    1.所求得的答案区间没有绕出一个环(单向,不绕过1),这种情况下就是求两个前缀和的差的最大值

    2.所求的答案区间绕出了一个环(例如8->2即8->1->2),这种情况下考虑的是(后缀和+前缀和最大值)的最大值

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<algorithm>
     7 #define maxn 100000+5
     8 #define chushi 21000000
     9 #define inf 0x7fffffff
    10 using namespace std;
    11 int sum1[maxn]={0},sum2[maxn]={0},a[maxn],maxx,minn,maxxx;
    12 int main()
    13 {
    14     freopen("input.txt","r",stdin);
    15     freopen("output.txt","w",stdout);
    16     int n;
    17     scanf("%d",&n);
    18     for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    19     sum1[1]=a[1];
    20     for(int i=2;i<=n;++i) sum1[i]=sum1[i-1]+a[i];
    21     sum2[n]=a[n];
    22     for(int i=n-1;i>=1;--i) sum2[i]=sum2[i+1]+a[i];
    23     maxx=-chushi;minn=chushi;
    24     //所求区间没有绕出环 ,求两前缀和之差的最大值 
    25     for(int i=1;i<=n;++i)
    26      {
    27          if(sum1[i]-minn>maxx) maxx=sum1[i]-minn;
    28          if(sum1[i]<minn) minn=sum1[i];
    29      }
    30      //所求区间绕出了一个环,(后缀和+前缀最大值)的最大值 
    31      maxxx=-chushi;
    32      for(int i=1;i<=n;++i)
    33       {
    34            if(sum2[i]+maxxx>maxx) maxx=maxxx+sum2[i];
    35            if(sum1[i]>maxxx) maxxx=sum1[i];
    36       }
    37       cout<<maxx;
    38       return 0;
    39 }
    40     
    View Code
  • 相关阅读:
    海量数据拆分到nosql系统的一种方案
    软件架构师应该知道的97件事
    【转载】实现软件架构质量属性的战术
    让技术人员看得懂的流程
    【转载】一步步构建大型网站架构
    [转载]从100PV到1亿级PV网站架构演变
    添加和删除hadoop集群中的节点
    windows下JDK环境配置
    如何部署hadoop集群
    android9.0适配HTTPS:not permitted by network security policy'
  • 原文地址:https://www.cnblogs.com/TYH-TYH/p/4928415.html
Copyright © 2011-2022 走看看