• HDU1087


    Super Jumping! Jumping! Jumping!

    题目大意:

    多组,n等于0时输入结束,每组给你n个数,要你求得一个上升子序列,使得子序列和最大。

    数据范围:

    1n1000int

    解题思路:

    这个题显然最长上升子序列改一下就行了,状态如下:

    if(a[i]>a[j])dp[i]=max(dp[j]+a[j],dp[i]);

    else  dp[i]=max(dp[i],a[i])

    dp[i]代表以第i个数字为结尾时的最大值。
    最后输出MAX(dp[i])(1in)就行了。

    AC代码:

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    const int maxn = 1000;
    typedef long long LL;
    LL dp[maxn + 5];
    LL a[maxn + 5];
    int n;
    int main() {
        while(~scanf("%d", &n) && n != 0) {
            memset(dp, 0, sizeof(dp));
            for(int i = 1; i <= n; i++)scanf("%lld", &a[i]);
            dp[1] = a[1];
            for(int i = 2; i <= n; i++) {
                for(int j = 1; j < i; j++) {
                    if(a[i] > a[j]) {
                        dp[i] = max(dp[j] + a[i], dp[i]);
                    }
                    else dp[i] = max(dp[i], a[i]);
                }
            }
            LL Max = 0;
            for(int i = 1; i <= n; i++)Max = max(Max, dp[i]);
            printf("%lld
    ", Max);
        }
        return 0;
    }
  • 相关阅读:
    matlab画图-在同一图像中显示多个函数
    matlab简单作图2
    matlab简单作图
    c++ this指针概念
    c++ 静态成员
    C++ 类对象作为类成员
    (C++核心编程 )初始化列表
    (C++核心编程 )点和圆的关系
    (C++核心编程)设计立方体类
    (python基础 函数)
  • 原文地址:https://www.cnblogs.com/TRDD/p/9813533.html
Copyright © 2020-2023  润新知