记录编号 240256 评测结果 AAAAAAAAAA
题目名称 最长公共子序列 最终得分 100
用户昵称 GravatarFmuckss 是否通过 通过
代码语言 C++ 运行时间 0.540 s
提交时间 2016-03-22 14:48:24 内存使用 95.88 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 5005; 
int f[maxn][maxn];
char a[maxn], b[maxn];
int cnta, cntb;
void read() {
	char tmp;
	tmp = getchar();
	cnta = 0;
	while(tmp < 'A' || tmp > 'Z') tmp = getchar();
	while(tmp != '.') {
		a[++cnta] = tmp;
		tmp = getchar();
	}
	cntb = 0;
	while(tmp < 'A' || tmp > 'Z') tmp = getchar();
	while(tmp != '.') {
		b[++cntb] = tmp;
		tmp = getchar();
	}
}
void solve() {
	for(int i = 1; i <= cnta; i++) {
		for(int j = 1; j <= cntb; j++) {
			if(a[i] == b[j]) f[i][j] = f[i-1][j-1]+1;//如果当前位相同,那对应的子序列相同数+1 
			else f[i][j] = max(f[i][j-1], f[i-1][j]);
		}
	} 
	printf("%d\n", f[cnta][cntb]);
}
int main() {
	freopen("lcslength.in", "r", stdin);
	freopen("lcslength.out", "w", stdout); 
	read();
	solve();
	return 0;
}