记录编号 241015 评测结果 AAAAAAAAAA
题目名称 最长公共子序列 最终得分 100
用户昵称 Gravatar水墨青花 是否通过 通过
代码语言 C++ 运行时间 0.549 s
提交时间 2016-03-24 10:56:44 内存使用 96.07 MiB
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<string>

using namespace std;

void Read();

char str1[5010],str2[5010];
int len1,len2;
int f[5010][5010];

int main()
{
	freopen("lcslength.in","r",stdin);
	freopen("lcslength.out","w",stdout);

	Read();

	fclose(stdin);
	fclose(stdout);
	return 0;
}

void Read()
{
	scanf("%s%s",str1+1,str2+1);
	len1=strlen(str1+1)-1;
	len2=strlen(str2+1)-1;

	//读入从1开始读,省掉两个for循环 
/*	for(int i=len1;i>0;i--)
	{
		str1[i]=str1[i-1];
	}
	for(int i=len2;i>0;i--)
	{
		str2[i]=str2[i-1];
	}*/
	
	//max函数可以自写,用三目运算符 
	for(int i=1;i<=len1;i++)
	{
		for(int j=1;j<=len2;j++)
		{
			if(str1[i]==str2[j])
			{
				f[i][j]=max(max(f[i][j-1],f[i-1][j]),f[i-1][j-1]+1);
			}
			else
			{
				f[i][j]=max(f[i][j-1],f[i-1][j]);
			}
		}
	}
//	cout<<len1<<' '<<len2<<endl;
	printf("%d",f[len1][len2]);
}