zoukankan      html  css  js  c++  java
  • HDU 1087 Super Jumping! Jumping! Jumping! (LIS的最大和)

    题意:

    给定n个数的序列, 找出最长上升子序列和。

    分析:

    #include<cstdio>
    #include<iostream>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<map>
    #include<vector>
    #include<algorithm>
    #include<cmath>
    #define rep(i,a,b) for(int i = a; i < b; i++)
    #define _rep(i,a,b) for(int i = a; i <= b; i++)
    using namespace std;
    const int inf = 1e9 + 7;
    int a[3000 + 7], dp[3000 + 7], n;
    int main()
    {
    //    freopen("1.txt", "r", stdin);
        while(cin >> n && n){
            memset(dp, 0, sizeof(dp));//dp数组含义是以i为结束的最长上升子序列的最大值
            rep(i,0,n){
                cin >> a[i];dp[i] = a[i];
            }
            int ans = -inf;
            rep(i,0,n){
                rep(j, 0 ,i){
                    if(a[i] > a[j]){
                        dp[i] = max(dp[i] , dp[j] + a[i]);//这里的最大值, 要么就是原来dp[j]的值加上a[i]
                                                          //要么就是dp[i]本身(dp[j]只有加上a[i]才能转移到dp[i])
                    }
                        ans = max(ans, dp[i]);
    
                }
            }
    
    
    //        rep(i,0,n) ans = max(ans, dp[i]); //其实这里没必要, dp[i]每次更新后都是最优
            printf("%d
    ", ans);
        }
    }
  • 相关阅读:
    Excel Sheet Column Number
    HappyNum
    isIsomorphic
    Contains DuplicateII
    iis7 设置http 自动跳转到https
    php 安装redis
    java 打包 war包
    NPOI 操作excel之 将图片插入到指定位置;
    nopi 简洁笔记
    vs11 微软下载地址
  • 原文地址:https://www.cnblogs.com/Jadon97/p/8359082.html
Copyright © 2011-2022 走看看