最大子列和

mooc浙大数据结构网课  

  最大子列和问题

  算法1.简单粗暴法

#include <stdio.h>

int main(int argc, char **argv) {
int n;
scanf("%d",&n);
int List[n];
for(int i=0;i<n;i++){
scanf("%d",&List[i]);
}
int x,y,z;
int MaxSum=0,Sum=0;
for(x=0;x<n;x++){
Sum = 0;
for(y=x;y<n;y++){
Sum += List[y];
if(Sum > MaxSum) MaxSum = Sum;
}
}
printf("%d",MaxSum);
return 0;
}

  算法2.在线处理法

#include <stdio.h>

int main(int argc, char **argv) {
    int n;
    scanf("%d",&n);
    int List[n];
    for(int i=0;i<n;i++){
        scanf("%d",&List[i]);
    }
    int j;
    int MaxSum=0,Sum=0;
    for(j=0;j<n;j++){
        Sum += List[j];
        if(Sum > MaxSum) MaxSum = Sum;
        else if (Sum < 0 ) Sum = 0;
    }
    printf("%d",MaxSum);
    return 0;
}

  算法3.分而治之

待补充

posted @ 2019-03-08 14:41  CANntyield灿东  阅读(142)  评论(0编辑  收藏  举报