c_cpp 最长的共同子序列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 最长的共同子序列相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

const int N = 100;
char A[N], B[N];
int dp[N][N];

int main() {
	int n;
	cin >> A + 1;	// Start from index 1
	cin >> B + 1;
	int lenA = strlen(A + 1);
	int lenB = strlen(B + 1);
	// boundary
	for (int i = 0; i <= lenA; i++) {
		dp[i][0] = 0;
	}
	for (int j = 0; j <= lenB; j++) {
		dp[0][j] = 0;
	}
	// state transition equation
	for (int i = 1; i <= lenA; i++) {
		for (int j = 1; j <= lenB; j++) {
			if (A[i] == B[j]) {
				dp[i][j] = dp[i - 1][j - 1] + 1;
			}
			else {
				dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
			}
		}
	}
	cout << dp[lenA][lenB] << endl;
	return 0;
}

/*
Sample Input:
sadstory
adminsorry
Sample Output:
6
*/

以上是关于c_cpp 最长的共同子序列的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 最长的子序列

c_cpp 最长的子序列

c_cpp 最长的子序列

c_cpp 最长的子序列

c_cpp 找到两个最长的非重叠回文子序列的长度的乘积

[LeetCode] Longest Uncommon Subsequence I 最长非共同子序列之一