您的位置:首页 > 其它

求子数组的最大和

2014-04-10 20:43 239 查看
这个题目其实就是最大连续字段和,在动态规划部分讲过。

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

#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);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: