ADV-202 最长公共子序列
来源:互联网 发布:网络销售外包合同 编辑:程序博客网 时间:2024/06/05 03:49
问题描述
给定两个字符串,寻找这两个字串之间的最长公共子序列。
输入格式
输入两行,分别包含一个字符串,仅含有小写字母。
输出格式
最长公共子序列的长度。
样例输入
abcdgh
aedfhb
aedfhb
样例输出
3
样例说明
最长公共子序列为a,d,h。
数据规模和约定
字串长度1~1000。
1.C++
#include<iostream>#include<cstdlib>#include<string>#include<vector>using namespace std;void LCS(string str1,string str2){int len1=str1.length();int len2=str2.length();//int dp = new int[len1+1][len2+1];vector<vector<int> > dp(len1+1,vector<int>(len2+1));//动态规划初始值for(int j=0;j<=len2;j++)dp[0][j]=0;for(int i=0;i<=len1;i++)dp[i][0]=0;for(int i=0;i < len1;i++)for(int j=0;j < len2;j++){if(str1.at(i)==str2.at(j)){dp[i+1][j+1]=dp[i][j]+1;}else if(dp[i][j+1] > dp[i+1][j])dp[i+1][j+1]=dp[i][j+1];elsedp[i+1][j+1]=dp[i+1][j];}cout<<dp[len1][len2]<<endl;int ti=0;int tj=0;while(ti<len1 && tj<len2){if(str1.at(ti)==str2.at(tj)){ti++;tj++;}else if(dp[ti+1][tj]>=dp[ti][tj+1])ti++;elsetj++;}}int main(){string str1,str2;cin>>str1>>str2;LCS(str1,str2);return 0;}2.C
#include <stdio.h>#include <stdlib.h>#include <string.h>#define N (1000+1) void chushihua( int , int n , int [][n] );void tianbiao( int , int n , int [][n] , char [] , char [] );int main(void) {char zfc_1[N] , zfc_2[N] ;scanf("%s%s" , zfc_1 , zfc_2 ) ;int len_1 = strlen( zfc_1 );int len_2 = strlen( zfc_2 );int biao[len_2][len_1] ;chushihua( len_2 , len_1 , biao );tianbiao( len_1 , len_2 , biao , zfc_1 , zfc_2 );printf("%d\n" , biao[len_1-1][len_2-1] );return 0;}void chushihua( int len_1 , int len_2 , int biao[][len_2] ){int i, j;for( i=0 ; i<len_1 ; i++ ){for( j=0 ; j<len_2 ; j++ ){biao[i][j] = 0; }}}void tianbiao( int len_1 , int len_2 , int biao[][len_2] , char zfc_1[] , char zfc_2[] ){int i , j;for( i=0 ; i<len_1 ; i++ ){if( i > 0 ){biao[0][i] = biao[0][i-1] ;}if( zfc_1[i] == zfc_2[0] ){biao[0][i] += 1;}}for( i=1 ; i<len_2 ; i++ ){for( j=0 ; j<len_1 ; j++ ){if ( zfc_1[j] == zfc_2[i] ){if ( j > 0 ){biao[i][j] += biao[i-1][j-1] + 1 ; }else{biao[i][j] += biao[i-1][j] + 1 ;}}else{if( j > 0 ){biao[i][j] = biao[i-1][j] > biao[i][j-1] ? biao[i-1][j] : biao[i][j-1] ;}else{biao[i][j] = biao[i-1][j] ;}}}}}
阅读全文
0 0
- ADV-202 最长公共子序列
- 算法提高 ADV-202 最长公共子序列
- 蓝桥杯 ADV-202算法提高 最长公共子序列(动态规划)
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- mysql 添加索引后 在查询的时候是mysql就自动从索引里面查询了。还是查询的时候有单 独的参数查询索引?
- 数据挖掘中的 10 大算法
- 加密连接数据库明文密码
- PAT考试乙级1031(C语言实现)重点题目
- 时间不同步导致Spring session失效的巨坑
- ADV-202 最长公共子序列
- Android 仿高德地图可拉伸的BottomSheet
- Python进阶之网络通信过程再现
- golang interface深度解析
- 从Element学习Vue的使用
- Quartz作业调度框架入门学习
- 大菲波数
- java基础2:异常
- ADS7822的使用