LCS 最大公共序列算法
来源:互联网 发布:网络品牌策划 编辑:程序博客网 时间:2024/05/16 17:22
点击打开链接
会长就是会长,,,,
/*LCSBDCABAABCBDABdp[i][j]//第一个字符串在第i个字符前且第二个串在第j个字符前可构成的最长子序列的长度 dp[i][j] = 0 i=0 || j=0dp[i-1][j-1]+1 str1[i]==str2[j]max(dp[i-1][j],dp[i][j-1]) str1[i]!=str2[j]*/#include<cstdio>#include<cstring>#include<stack>#include<algorithm>using namespace std;int main(){char str1[20];char str2[20];scanf ("%s %s",str1+1,str2+1);str1[0] = str2[0] = '0';int l1 = strlen(str1)-1;int l2 = strlen(str2)-1;int dp[20][20] = {0};//0 i=0 || j=0for (int i = 1 ; i <= l1 ; i++){for (int j = 1 ; j <= l2 ; j++){if (str1[i] == str2[j])//dp[i-1][j-1]+1 str1[i]==str2[j]dp[i][j] = dp[i-1][j-1] + 1;elsedp[i][j] = max(dp[i-1][j],dp[i][j-1]);//max(dp[i-1][j],dp[i][j-1]) str1[i]!=str2[j]//printf("dp[%d][%d]==%d\n",i,j,dp[i][j]);}//printf("\n");}//回溯求LCS int pos1 = l1;int pos2 = l2;stack<char> S;while (pos1 > 0 && pos2 > 0){//printf("dp[pos1-1][pos2]==%d\tdp[pos1][pos2-1]==%d\n",dp[pos1-1][pos2],dp[pos1][pos2-1]);if (str1[pos1] == str2[pos2]){S.push(str1[pos1]);pos1--;pos2--;}else if (dp[pos1-1][pos2] > dp[pos1][pos2-1])pos1--;elsepos2--;}while (!S.empty()){printf ("%c%c",S.top(),(S.size() == 1) ? '\n' : ' ');S.pop();}printf ("%d\n",dp[l1][l2]);return 0;}
阅读全文
1 0
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法
- LCS 最大公共序列算法粗略讲解
- 最大公共子序列(LCS算法)
- LCS 最大公共子序列算法详解
- LCS最大公共子序列
- 最大公共子序列LCS
- LCS 最大公共子序列
- HDU1503:Advanced Fruits LCS 最大公共序列算法
- LCS最大公共子序列O(nlogn)算法
- LCS算法&最大公共子串&最长公共子序列 PHP 实现
- hdu 1159 LCS最大公共子序列
- Java常用API(转载)
- NYOJ XYNUYOJ 郁闷的c小加(一)(数据结构)
- hdoj 1024 Max Sum Plus Plus(最大m子段和)=-=
- MVC框架简介,SSH 和SSM
- 安卓动画(旋转,平移,透明,缩放,帧动画)
- LCS 最大公共序列算法
- 数据库里的DM5和SHA1
- jsp九大内置对象
- [Leetcode] 339. Nested List Weight Sum 解题报告
- POJ1463-Strategic game
- svn clean up falied 终极解决方案
- 居民身份证号码的编码规则
- HTML常用的特殊符号总结 2014年9月12日 22704次浏览 html中经常会用到一些特殊符号,例如箭头,雪花,心形等等,这些符号就不用css样式或者图片来写了,直接用html特殊符号可以实现。
- Android Studio 3.+版本 Gradle中Complie和Implementation