HDU 1159 最长公共子序列

题意就是给两个字符串,找最长公共子序列。由于是最裸的题了,就不讲了。有关最长公共子序列的详细讲说,请到http://blog.csdn.net/jiang199235jiangjj/article/details/7466667。

代码如下:

#include <stdio.h>
#include <iostream>
#include <string.h>
#define N 1000
using namespace std;
char str1[N+5],str2[N+5];
int matrix[N+6][N+6];
int main()
{
	//freopen("in.txt","r",stdin);
	int i,j,k=N+6;
	for(i=0;i<=k;i++)
			matrix[0][i]=matrix[i][0]=0;
	while(~scanf("%s%s",str1,str2))
	{
		k=0;
		int n=strlen(str1),m=strlen(str2);
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
			{
				if(str1[i-1]==str2[j-1])
					matrix[i][j]=matrix[i-1][j-1]+1;
				else matrix[i][j]=max(matrix[i-1][j],matrix[i][j-1]);
				//printf("%d  ",matrix[i+1][j+1]);
			}
			//cout<<endl;
		}
		printf("%d\n",matrix[n][m]);
	}
}


以上代码如有不足地方,敬请留言指教、、、


你可能感兴趣的:(HDU 1159 最长公共子序列)