poj 2250 Compromise

来源:互联网 发布:骷髅头音乐软件 编辑:程序博客网 时间:2024/05/18 03:39
和其他一般题不同的是,本题以一个单词为单位进行比较。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define MAXN 500010int num1,num2,dp[505][505];char  s[505][505],s1[505][505],s2[505][505];void lcs(int a,int b){if(a==0||b==0) return;else if(s[a][b]==0){lcs(a-1,b-1);printf("%s ",s1[a]);}else if(s[a][b]==-1){lcs(a-1,b);}else{lcs(a,b-1);}}int main(){int i,j,k;while(scanf("%s",s1[1])!=EOF){num1=2,num2=1;while(scanf("%s",s1[num1])&&s1[num1][0]!='#'){num1++;}while(scanf("%s",s2[num2])&&s2[num2][0]!='#'){num2++;}memset(dp,0,sizeof(dp));for(i=1;i<num1;i++){for(j=1;j<num2;j++){if(!strcmp(s1[i],s2[j])){dp[i][j]=dp[i-1][j-1]+1;s[i][j]=0;}else{if(dp[i-1][j]>dp[i][j-1]){dp[i][j]=dp[i-1][j];s[i][j]=-1;}else {dp[i][j]=dp[i][j-1];s[i][j]=1;}}}}lcs(num1-1,num2-1);printf("\n");}}

0 0
原创粉丝点击