码迷,mamicode.com
首页 > 其他好文 > 详细

最长公共子序列(dp)

时间:2017-10-05 21:59:33      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:size   def   序列   --   col   class   i++   using   clu   

求最长公共子序列,比较出两个字符串的最长的序列。
用动态规划求解







1
#include <bits/stdc++.h> 2 #define N 10005 3 #define mem(a) memset(a,0,sizeof(a)) 4 5 using namespace std; 6 int k[N][N]; 7 stack<char> s; 8 void substring(string s1,string s2){ 9 mem(k); 10 int slen,clen; 11 slen=s1.length(); 12 clen=s2.length(); 13 for(int i=1;i<=slen;i++){ 14 for(int j=1;j<=clen;j++){ 15 if(s1[i-1]==s2[j-1]){ 16 k[i][j]=k[i-1][j-1]+1; 17 }else{ 18 k[i][j]=max(k[i][j-1],k[i-1][j]); 19 } 20 } 21 } 22 for(int i=slen,j=clen;i>=1&&j>=1;){ 23 if(s1[i-1]==s2[j-1]){ 24 s.push(s1[i-1]); 25 i--,j--; 26 }else{ 27 if(k[i][j-1]>=k[i-1][j]){ 28 j--; 29 }else{ 30 i--; 31 } 32 } 33 } 34 } 35 36 int main(){ 37 string s1,s2; 38 cin>>s1>>s2; 39 substring(s1,s2); 40 while(!s.empty()){ 41 cout<<s.top(); 42 s.pop(); 43 } 44 cout<<endl; 45 return 0; 46 }

 

最长公共子序列(dp)

标签:size   def   序列   --   col   class   i++   using   clu   

原文地址:http://www.cnblogs.com/zllwxm123/p/7630077.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!