zoukankan      html  css  js  c++  java
  • HDU1231

    View Code
     1 /*
     2 最大连续子序列和
     3 输出 ans 和 首元素,尾元素
     4 */
     5 
     6 /*
     7 //TLE 只适合处理小型数据
     8 #include<stdio.h>
     9 #include<string.h>
    10 #include<stdlib.h>
    11 #include<algorithm>
    12 #include<iostream>
    13 #include<queue>
    14 using namespace std;
    15 const int maxn = 10005;
    16 int a[ maxn ];
    17 int main(){
    18     int n;
    19     while( scanf("%d",&n) !=EOF ){
    20         if( n==0 ) break;
    21         for( int i=1;i<=n;i++ )
    22             scanf("%d",&a[ i ]);
    23         int st=1,en=1;
    24         int ans=0;
    25         int flag=-1;
    26         for( int i=1;i<=n;i++ ){
    27             int tmp=0;
    28             for( int j=i;j<=n;j++ ){
    29                 tmp+=a[ j ];
    30                 if( tmp>ans ){
    31                     ans=tmp;
    32                     st= i ;
    33                     en= j ;
    34                     flag=1;
    35                     continue;
    36                 }
    37                 if( ans==tmp ){
    38                     if(flag==-1){
    39                         st=i;
    40                         en=j;
    41                         flag=1;
    42                     }
    43                 }
    44             }
    45         }
    46         if( flag==-1 )
    47             printf("0 %d %d\n",a[1],a[n]);
    48         else{
    49             printf("%d %d %d\n",ans,a[st],a[en]);
    50         }
    51     }
    52     return 0;
    53 }
    54 */
    55 #include<stdio.h>
    56 #include<string.h>
    57 #include<stdlib.h>
    58 #include<algorithm>
    59 #include<iostream>
    60 #include<queue>
    61 using namespace std;
    62 const int maxn = 10005;
    63 int a[ maxn ];
    64 int sum[ maxn ];
    65 int main(){
    66     int n;
    67     while( scanf("%d",&n)!=EOF && n ){
    68         for( int i=1;i<=n;i++ )
    69             scanf("%d",&a[ i ]);
    70         int ans;//-1
    71         memset( sum,0,sizeof(sum) );
    72         int st,en,x,y;
    73         ans=st=en=x=y=a[ 1 ];//x,y在这里能初始化
    74         sum[ 1 ]=a[ 1 ];
    75         for( int i=2;i<=n;i++ ){
    76             if( sum[ i-1 ]<=0 ){
    77                 sum[ i ]=a[ i ];
    78                 st=en=a[ i ];
    79             }
    80             else{
    81                 sum[ i ]=sum[ i-1 ]+a[ i ];
    82                 en=a[ i ];
    83             }
    84             if( ans<sum[ i ] ){
    85                 ans=sum[ i ];
    86                 x=st;
    87                 y=en;
    88             }
    89         }
    90         if( ans<0 ){
    91             printf("0 %d %d\n",a[1],a[n]);
    92         }
    93         else{
    94             printf("%d %d %d\n",ans,x,y);
    95         }
    96     }
    97     return 0;
    98 }
    keep moving...
  • 相关阅读:
    分页bootstrap
    导航条bootstrap
    导航bootstrap
    栅格系统bootstrap
    「ICPC2015 WF」Pipe Stream
    「LOJ#3399」Communication Network
    「WC2019」数树
    「UTR #3」量子破碎
    XJOI1105模拟赛 积木游戏
    XJOI1104NOIP模拟赛
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2801313.html
Copyright © 2011-2022 走看看