标签:void printf abd F12 color cout string main return
第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000)
输出最长的子序列,如果有多个,随意输出1个。
abcicba abdkscab
abca
#include <bits/stdc++.h> using namespace std; char a[1010],b[1010]; int dp[1010][1010]; string str=""; int path[1010][1010];//打印路径用,表示(i,j)节点是由那种状态转移过来的 void Lcs(int i,int j){ if(i==0||j==0){ return; } if(path[i][j]==1){ Lcs(i-1,j-1); printf("%c",a[i-1]); }else if(path[i][j]==2){ Lcs(i-1,j); }else{ Lcs(i,j-1); } return ; } int main(){ // freopen("in.txt","r",stdin); scanf("%s%s",a,b); for(int i=1;i<=strlen(a);i++){ for(int j=1;j<=strlen(b);j++){ if(a[i-1]==b[j-1]){ dp[i][j]=dp[i-1][j-1]+1; path[i][j]=1; }else if(dp[i-1][j]>dp[i][j-1]){ dp[i][j]=dp[i-1][j]; path[i][j]=2; }else{ dp[i][j]=dp[i][j-1]; path[i][j]=3; } } } // cout<<dp[strlen(a+1)][strlen(b+1)]<<endl; Lcs(strlen(a),strlen(b)); cout<<endl; return 0; }
标签:void printf abd F12 color cout string main return
原文地址:http://www.cnblogs.com/wuwangchuxin0924/p/6648506.html