• 求最大连续和——dp


     输入一组整数,求出这组数字子序列和中最大值。也就是仅仅要求出最大子序列的和,不必求出最大的那个序列。

    比如:

    序列:-2 11 -4 13 -5 -2,则最大子序列和为20。

    序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16

    #include<stdio.h>

    int main()
    {
        void res(int num[],int n);
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int num[110],i;
            for(i=0;i<n;i++)
                scanf("%d",&num[i]);
            res(num,n);
        }
        return 0;
    }
    void res(int num[],int n)
    {
        int i,sum=0,max=0;
        for(i=0;i<n;i++)
        {
            sum=sum+num[i];
            if(sum>max)//连续的和有比max大的。就赋值给max
                max=sum;
            if(sum<0)//假设连续的数和变为了负的,那么当遇到下一个比max大的数就从这个数開始向后加
                sum=0;
        }
        printf("%d ",max);
    }
  • 相关阅读:
    Redis介绍
    getch
    gecher
    C语言中的sleep函数
    sleep
    C语言中的System()函数
    System的使用
    函数参数的传递方式
    C语言strlen()函数:返回字符串的长度
    strlen
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7384565.html
Copyright © 2020-2023  润新知