zoukankan      html  css  js  c++  java
  • 动规专题

    最长上升子序列:

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3fffffff
    const int maxn=1010;
    int A[maxn];
    int dp[maxn];
    //最长上升子序列
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>A[i];
        }
        dp[0]=A[0];
        for(int i=1;i<n;i++){
            dp[i]=max(A[i],dp[i-1]+A[i]);
        }
        int k=0;
        for(int i=1;i<n;i++){
            if(dp[i]>dp[k]){
                k=i;
            }
        }
        cout<<dp[k]<<endl;
        return 0;
    }
    //6
    //-2 11 -4 13 -5 -2
    //20

    最长不下降子序列:

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3fffffff
    const int maxn=1010;
    int A[maxn];
    int dp[maxn];
    //最长不下降子序列
    int main(){
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>A[i];
            dp[i]=1;
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<i;j++){
                if(A[j]<=A[i]&&dp[j]+1>dp[i]){
                    dp[i]=dp[j]+1;
                }
            }
        }
        int maxL=-1;
        for(int i=0;i<n;i++){
            if(dp[i]>maxL){
                maxL=dp[i];
            }
        }
        cout<<maxL<<endl;
        return 0;
    }
    //8
    //1 2 3 -9 3 9 0 11
    //6

    最长公共子序列:

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3fffffff
    const int maxn=1010;
    int dp[maxn][maxn];
    //最长公共子序列
    int main(){
        string s1;
        string s2;
        cin>>s1>>s2;
        int len1=s1.size();
        int len2=s2.size();
        for(int i=0;i<=len1;i++){
            dp[i][0]=0;
        }
        for(int i=0;i<=len2;i++){
            dp[0][i]=0;
        }
        for(int i=1;i<=len1;i++){
            for(int j=1;j<=len2;j++){
                if(s1[i]==s2[j]){
                    dp[i][j]=dp[i-1][j-1]+1;
                }
                else{
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                }
            }
        }
        cout<<dp[len1][len2]<<endl;
        return 0;
    }
  • 相关阅读:
    bzoj3993: [SDOI2015]星际战争
    bzoj3583: 杰杰的女性朋友 && 4362: Graph
    bzoj2260: 商店购物 && 4349: 最小树形图
    老oj3444 && Pku3241 Object Clustering
    bzoj3754: Tree之最小方差树
    bzoj2215: [Poi2011]Conspiracy
    老oj曼哈顿最小生成树
    bzoj2180: 最小直径生成树
    棋盘问题
    油田 Oil Deposits
  • 原文地址:https://www.cnblogs.com/dreamzj/p/14667690.html
Copyright © 2011-2022 走看看