HDU 1159

最简单的最长公共子序列问题

上AC的代码

//最长公共子序列
#include <stdio.h>
#include <string.h>
int a[1005][1005];
void LCSLength(char *str1,char *str2,int len1,int len2)
{
	int i,j;
	for(i=1;i<=len1;i++)
	{
		for(j=1;j<=len2;j++)
		{
			if(str1[i-1]==str2[j-1])
				a[i][j]=a[i-1][j-1]+1;
			else if(a[i-1][j]>=a[i][j-1])
				a[i][j]=a[i-1][j];
			else
				a[i][j]=a[i][j-1];
		}
	}
	printf("%d\n",a[len1][len2]);
}

int main()
{
	char str1[1005],str2[1005];
	while(~scanf("%s %s",str1,str2))
		LCSLength(str1,str2,strlen(str1),strlen(str2));
	return 0;
}


你可能感兴趣的:(HDU 1159)