读书人

hdu - 1087 - Super Jumping! Jumping

发布时间: 2013-02-18 10:50:49 作者: rapoo

hdu - 1087 - Super Jumping! Jumping! Jumping!

题意:求最大升序和。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087

——>>设d[i]表示以第i个数为终点的最大升序和,然后从第1个数到第i-1个数为终点的最大升序和进行检查,向后递推即可。

#include <iostream>#include <algorithm>using namespace std;int main(){    int N, a[1010], i, j;    long long d[1010];      //d[i]表示以第i个数为终点的最大升序和    while(cin>>N)    {        if(!N) return 0;        for(i = 1; i <= N; i++)        {            cin>>a[i];            d[i] = a[i];        //最小为其自己,无左拓展        }        long long max_sum = a[1];       //最大升序和存进max_sum        for(i = 2; i <= N; i++)     //第1个一定是它自己,故从第2个数开始            for(j = 1; j < i; j++)            {                if(a[j] < a[i]) d[i] = max(d[i], d[j]+a[i]);        //如果是升序,更新                max_sum = max(max_sum, d[i]);       //更新            }        cout<<max_sum<<endl;    }    return 0;}


读书人网 >编程

热点推荐