杭电1087

来源:互联网 发布:淘宝网付款方式 编辑:程序博客网 时间:2024/06/05 09:38

上链接:杭电1087


题目大意:

找出一串数中的一个和最大的递增子串


答题思路:

DP,最长上升子序列的变化


贴代码:

#include <cstdio>#include <climits>using namespace std;int num[1001], sum[1001];int main(){    int n, max;    while(scanf("%d", &n)!=EOF && n)    {        for(int i=0; i<n; ++i)            scanf("%d", &num[i]);        sum[0] = num[0];        for(int i=1; i<n; ++i)        {            sum[i] = num[i];            for(int j=0; j<n; ++j)                if(num[i] > num[j])                    if(sum[i] < sum[j] + num[i])                        sum[i] = sum[j] + num[i];        }        max = INT_MIN;        for(int i=0; i<n; ++i)            if(max < sum[i])                max = sum[i];        printf("%d\n", max);    }    return 0;}


0 0
原创粉丝点击