求子数组的最大和

来源:互联网 发布:club域名怎么用 编辑:程序博客网 时间:2024/05/16 09:53

这个题目其实就是最大连续字段和,在动态规划部分讲过。

现在为了阿里面试,再次拿出来复习一下。


#include<stdio.h>int main(){    int a[100];    int dp[100];    int n,start,end,max;    while(scanf("%d",&n)==1)    {        int i;        for(i=0;i<n;i++)            scanf("%d",&a[i]);        max = 0;        dp[0] = a[0];        for(i=1;i<n;i++)        {            if(dp[i-1]>0)                dp[i] = dp[i-1]+a[i];            else                dp[i] = a[i];            if(dp[i]>max)            {                max = dp[i];                if(dp[i] == a[i])                {                    start = i;                    end = i;                }                else                {                    end = i;                }            }        }        printf("max=%d,start=%d,end=%d",max,start,end);    }}


0 0
原创粉丝点击