标签:des style color os io for ar div
Description
Input
Output
Sample Input
die einkommen der landwirte sind fuer die abgeordneten ein buch mit sieben siegeln um dem abzuhelfen muessen dringend alle subventionsgesetze verbessert werden # die steuern auf vermoegen und einkommen sollten nach meinung der abgeordneten nachdruecklich erhoben werden dazu muessen die kontrollbefugnisse der finanzbehoerden dringend verbessert werden #
Sample Output
die einkommen der abgeordneten muessen dringend verbessert werden
单词的LCS,要递归输出=-=,我脑袋大笨,竟在比赛时想着模拟
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<limits.h> using namespace std; char s1[110][110],s2[110][110]; char s[110][110]; int mark[110][110],dp[110][110]; int len1,len2,num; void LCS() { memset(dp,0,sizeof(dp)); memset(mark,0,sizeof(mark)); for(int i=0;i<=len1;i++) mark[i][0]=1; for(int i=0;i<=len2;i++) mark[0][i]=-1; for(int i=1;i<=len1;i++) { for(int j=1;j<=len2;j++) { if(!strcmp(s1[i-1],s2[j-1])) { dp[i][j]=dp[i-1][j-1]+1; mark[i][j]=0;//mark为0代表s1[i-1]=s2[j-1]便于递归输出 } else if(dp[i-1][j]>=dp[i][j-1]) { dp[i][j]=dp[i-1][j]; mark[i][j]=1;//同理 } else { dp[i][j]=dp[i][j-1]; mark[i][j]=-1; } } } } void print(int i,int j) { if(!i&&!j) return ; if(mark[i][j]==0) { print(i-1,j-1); strcpy(s[num++],s1[i-1]); } else if(mark[i][j]==1) print(i-1,j); else print(i,j-1); } int main() { while(~scanf("%s",s1[0])) { len1=1; while(strcmp(s1[len1-1],"#")) scanf("%s",s1[len1++]); scanf("%s",s2[0]); len2=1; while(strcmp(s2[len2-1],"#")) scanf("%s",s2[len2++]); len1--; len2--; num=0; LCS(); print(len1,len2); printf("%s",s[0]); for(int i=1;i<num;i++) printf(" %s",s[i]); printf("\n"); } return 0; }
周赛 POJ 2250 Compromise,布布扣,bubuko.com
标签:des style color os io for ar div
原文地址:http://blog.csdn.net/u013582254/article/details/38395443