这道题是什么样的动态规划?应该怎么做?

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:48:24
题目描述:
君不知,打靶大牛goleenuoer可喜欢打水漂了,他的靶子可以打到河面上的任何一条鱼,可是他的水漂打得实在是烂,无论怎么打那石子只会在河面上跳跃两次就“扑通”了.这天他又来打了.这条宽w米,每隔一米都会有一条鱼,每条鱼都有它的美观值.他想知道如何打才能得到两条鱼之间最大的美观值总和.刚接触OI的他想请您来解答,您能帮助他吗???

输入格式 输入文件包含n+1个整数,第一行为一个整数n(n<=10000).从第二行工n个数,第i个整数表示第i条鱼的美观值范(围为-500..500).当所有整数都为负数时输出0.
输出格式 输出文件包含两行,第一行为石子的起点和落点,用空格隔开.第二行为一个整数表示所得到的两条鱼之间美观值总和.
输入文件 直接输入即可
输出文件 直接输出即可 注意,不要在最后输出空行或空格!
样例输入
6
-2 11 -4 13 -5 -2
样例输出
2 4
20
蜗牛爬阿爬的解法是贪心吧,有些情况不行

这是求最大子段和问题
int fun(int array[],int len)
{
    int i,max,cur;
    max=cur=0;
    for(i=0;i<len;++i)
    {
        if(array[i]<0 && cur+array[i]<0) cur=0;
        else cur+=array[i];
        if(max<cur) max=cur;
    }
    return max;
}

看看