LIS,LCS,LCIS

简介: LIS,LCS,LCIS

LIS(最长上升子序列)

#include<iostream>
using namespace std;
int a[1100],dp[1100],ans,n;
int main() {
  cin>>n;
  for(int i=1; i<=n; i++) {
    cin>>a[i];
    dp[i]=1;//初始状态
  }
  ans=1;
  for(int i=1; i<=n; i++) {
    for(int j=1; j<=i; j++) {
      if(a[j]<a[i]) {
        dp[i]=max(dp[i],dp[j]+1);//状态转移
        ans=max(ans,dp[i]);
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}

LIS(最长上升子序列)

#include<iostream>
using namespace std;
int a[1100],dp[1100],ans,n;
int main() {
  cin>>n;
  for(int i=1; i<=n; i++) {
    cin>>a[i];
    dp[i]=1;//初始状态
  }
  ans=1;
  for(int i=1; i<=n; i++) {
    for(int j=1; j<=i; j++) {
      if(a[j]<a[i]) {
        dp[i]=max(dp[i],dp[j]+1);//状态转移
        ans=max(ans,dp[i]);
      }
    }
  }
  cout<<ans<<endl;
  return 0;
}

LCIS(最长公共上升子序列)

#include<iostream>
#include<string.h>
using namespace std;
const int N=1010;
int n,m;
int a[N],b[N];
int f[N][N];
int main() {
  int t;
  cin>>t;
  while(t--) {
    memset(f,0,sizeof(f));
    cin>>n;for(int i=1;i<=n;i++)cin>>a[i];
    cin>>m;for(int i=1;i<=m;i++)cin>>b[i];
    for(int i=1; i<=n; i++) {
      int maxv=1;
      for(int j=1; j<=m; j++) {
        f[i][j]=f[i-1][j];
        if(a[i]==b[j])
          f[i][j]=max(f[i][j],maxv);
        if(b[j]<a[i])
          maxv=max(maxv,f[i-1][j]+1);
      }
    }
    int res=0;
    for(int i=1;i<=m;i++){
      res=max(res,f[n][i]);
    }
    cout<<res<<endl;
    if(t!=0){
      cout<<endl;
    }
  }
}
目录
相关文章
|
10月前
|
存储
HJ26 字符串排序
HJ26 字符串排序
65 0
|
5月前
|
算法
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
这篇文章介绍了动态规划算法中解决最大上升子序列问题(LIS)的方法,包括问题的描述、动态规划的步骤、状态表示、递推方程、计算最优值以及优化方法,如非动态规划的二分法。
108 0
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
华为机试HJ12:字符串反转
华为机试HJ12:字符串反转
UPC——Swap (LCS转为LIS)
UPC——Swap (LCS转为LIS)
122 0
UPC——Swap (LCS转为LIS)
|
算法 Python
python实现【基数排序】(Radix Sort)
python实现【基数排序】(Radix Sort)
HDU 4632 Palindrome subsequence(动态规划)
HDU 4632 Palindrome subsequence(动态规划)
88 0
HDU 4632 Palindrome subsequence(动态规划)
|
算法 PHP Python
最长公共子串- LCS 算法
最长公共子串- LCS 算法
110 0