您的位置:首页 > 产品设计 > UI/UE

Uva10405 Longest Common Subsequence

2014-04-02 18:29 453 查看
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1346

题意:经典LCS问题,最长公共子序列,状态转移方程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]);

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
const int m = 1000+10;
int dp[m][m];
int main()
{
char a[m];
char b[m];
while(gets(a)&&gets(b))
{
int l=strlen(a);
int h=strlen(b);
memset(dp,0,sizeof(dp));
for(int i=1;i<=l;i++){
for(int j=1;j<=h;j++)
{
if(a[i-1]==b[j-1])
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout << dp[l][h] << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dp uva