HDU1159 Common Subsequence【最长公共子序列】【模板题】

 HDU1159 Common Subsequence

多组输入,求最长公共子序列 

#include<string.h>
#include<iostream>
using namespace std;
int dp[500][500];
char a[500],b[500];
int LCS(int m,int n)
{
	int i,j;
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(a[i-1]==b[j-1]) 
				dp[i][j]=dp[i-1][j-1]+1;
			else
				//dp[i][j]=dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1];
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
			
		}
	}
	return dp[m][n];
}
int main()
{
	int m,n;
	//while(scanf("%s %s",a,b)!=EOF)
	while(cin>>a>>b)
	{
		memset(dp,0,sizeof(dp));
		m=strlen(a);
		n=strlen(b);
		cout<<LCS(m,n)<<endl;
	}
}

猜你喜欢

转载自blog.csdn.net/tingtingyuan/article/details/81542556