最长公共子序列

题目描述

给你两个字符串,求这两个串的最长公共子序列。

对于字符串abcde

acd,ace, ade等都是子序列,acb不是子序列

输入格式

输入两行,每行包含一个字符串

输出格式

输出一个整数表示最长公共子序列的长度

输入样例

xjoixjoi
joyjoy

输出样例

4

输入样例

xsrrnzkbhzkhzmvkjevsrbdiclckmsgpgngyckzvgysvwcgwayjokqactfxtivfbdwprufivtgg
zhbpvlxfkisdneogdseenjlewrobjhpppjczyxeaiqanaztksnpfwyhdjvipgwzznmnnxwraiiei

输出样例

21

说明/提示

字符串长度小于等于10

CODE

//2019.12.14
#include<bits/stdc++.h>
using namespace std;

int dp[1100][1100];
string a, b, c, d;

int main(){
	cin >> c >> d;
	int lena = c.length(), lenb = d.length();
	a = ' ' + c;
	b = ' ' + d;
	for(int i = 1; i <= lena; i++){
		for(int j = 1; j <= lenb; j++){
			if(a[i] != b[j]){
				dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
			}else{
				dp[i][j] = max(dp[i][j], dp[i-1][j-1] + 1);
			}
		}
	}
	printf("%d\n", dp[lena][lenb]);
	return 0;
}
/*
xjoixjoi
joyjoy
*/
posted @ 2020-10-31 23:51  LT-Y  阅读(130)  评论(0)    收藏  举报