前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LCS(最长公共子序列问题)

LCS(最长公共子序列问题)

作者头像
种花家的奋斗兔
发布2020-11-13 10:51:00
2710
发布2020-11-13 10:51:00
举报
文章被收录于专栏:NLP小白的学习历程

LCS(最长公共子序列问题)

首先,我们先声明一下子序列的概念:

取出序列中某些特定的项并保持它们在原来序列中的顺序,所得到的新序列成为原序列的子序列。

(所以说,子序列未必是连续的,连续的就叫子集了)

代码语言:javascript
复制
#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;

const int MAX_N = 1000, MAX_M = 1000;
//输入
int n, m;
char s[MAX_N], t[MAX_M];

int dp[MAX_N + 1][MAX_M + 1];//DP数组

void solve()
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (s[i] == t[j])
			{
				dp[i + 1][j + 1] = dp[i][j] + 1;
			}
			else
			{
				dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]);
			}
		}
	}
	cout << dp[n][m] << endl;
}
int main()
{
	cin >> n >> m;
	for (int i = 0; i < n; i++)
	{
		cin >> s[i];
	}
	for (int i = 0; i < n; i++)
	{
		cin >> t[i];
	}
	memset(dp, 0, sizeof(dp));
	solve();
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/02/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LCS(最长公共子序列问题)
    • 首先,我们先声明一下子序列的概念:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档