题目名称:最大子段和

 

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

输入格式:

第一行是一个正整数N,表示了序列的长度。

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

输出格式:

仅包括1个整数,为最大的子段和是多少。子段的最小长度为1。

 

枚举

 最蠢的办法,枚举左端点和右端点,再求和,用一个max储存历史的最大值,就可以了。时间复杂度O(n3)。

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int _Max(int x,int y){return x>y?x:y;}
 5 int num[10001],sum=0;
 6 int max=0;
 7 int main(){
 8     int n;
 9     scanf("%d",&n);
10     int i,j;
11     for(i=1;i<=n;i++){
12         scanf("%d",&num[i]);
13     }
14     for(i=1;i<n;i++){
15         for(j=i+1;j<=n;j++){
16             sum=0; 
17             for(int k=i;k<=j;k++)
18                 sum+=num[k];
19             max=_Max(sum,max);
20         }
21     }
22     printf("%d\n",max);
23     return 0;
24 }
View Code

相关文章:

  • 2022-12-23
  • 2021-08-11
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-11
  • 2021-11-21
  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案