• 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...
  • 相关阅读:
    Visual Studio Error C4335 检测到Mac文件格式:请将源文件转换为DOS格式或UNIX格式
    Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符
    PCL 注意事项
    Realsense D435i Winodws和Linux开发环境配置
    Hybrid Astar
    Git 分支管理
    Visula Studio 安装 Visual Assist
    Typora 设置字体颜色
    Mac上使用Charles+Chrome
    linux Kill 命令
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2801313.html
Copyright © 2020-2023  润新知