贪心法 求最大子阵列

来源:互联网 发布:touch bar 知乎 编辑:程序博客网 时间:2024/05/22 11:47

在一个数组中找出和最大的连续几个数。(至少包含一个数)

例如:

数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.

输入格式

第一行输入一个不超过1000的整数n。

第二行输入n个整数A[i]。

输出格式

第一行输出一个整数,表示最大的和。

样例输入

31 1 -2

样例输出

2

#include<stdio.h>int max(a,b){    return a>b?a:b;}int MaxSum3(int arr[1001],int len){    int i,j=-1e+10;    int Sum = 0;    for(i=0;i<len;i++)    {        Sum += arr[i];        j=max(Sum,j);        Sum=max(Sum,0);    }    return j;}int main(){    int n,i,k,a[1001];    scanf("%d\n",&n);    for(i=0;i<=n-1;i++)        scanf(" %d",&a[i]);    k=MaxSum3(a,n);    printf("%d",k);    return 0;}

原创粉丝点击