您的位置:首页 > 产品设计 > UI/UE

UVA 10405 Longest Common Subsequence

2011-08-23 12:18 549 查看
经典的DP,

本来可以开一个二维大数组的。

但是由于以前做过,现在再来做。。。

直接滚动数组水之(原谅我的无耻、、、)

还要注意,用scanf会Wa

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
#define M 1003
char s[M],t[M];
int main(){
while(gets(s+1)){
gets(t+1);
int dp[2][M]={0},len1=strlen(s+1),len2=strlen(t+1);
int p,i,j;
for(i=1;i<=len1;i++){
p=i&1;
for(j=1;j<=len2;j++){
if(s[i]==t[j])
dp[p][j]=dp[!p][j-1]+1;
else
dp[p][j]=dp[p][j-1]>dp[!p][j]?dp[p][j-1]:dp[!p][j];
}
}
cout<<dp[len1&1][len2]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: