您的位置:首页 > 其它

poj 1458 LCS

2015-08-07 16:31 316 查看
#include <stdio.h>
#include <string.h>
#include <algorithm>
#pragma warning (disable :4996)
using namespace std;

const int Max = 1000;
int dp[Max][Max];
char str1[Max], str2[Max];

int LCS(int lenstr1, int lenstr2)
{
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= lenstr1; i++)
{
for (int j = 1; j <= lenstr2; j++)
{
if (str1[i - 1] == str2[j - 1])
dp[i][j] = dp[i - 1][j - 1] + 1;
else
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
return dp[lenstr1][lenstr2];
}

int main()
{
while (~scanf("%s %s", str1, str2))
{
int m = strlen(str1);
int n = strlen(str2);
printf("%d\n", LCS(m, n));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: