Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. #include <cctype>
  2. #include <string>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6. string v1[105],v2[105];
  7. int dp[105][105],sol[105];
  8. void lcs(int n,int m)
  9. {
  10. int i,j;
  11. for(i=1;i<=n;++i)
  12. for(j=1;j<=m;++j)
  13. if(v1[i].compare(v2[j])==0)
  14. dp[i][j]=dp[i-1][j-1]+1;
  15. else
  16. dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
  17. int x=n,y=m;
  18. while(dp[x][y])
  19. {
  20. if(v1[x].compare(v2[y])==0)
  21. {
  22. sol[dp[x][y]]=x;
  23. --x;--y;
  24. }
  25. else
  26. if(max(dp[x-1][y],dp[x][y-1])==dp[x-1][y])
  27. --x;
  28. else
  29. --y;
  30. }
  31. }
  32. void out(string s)
  33. {
  34. for(int i=0;i<s.size();++i)
  35. printf("%c",s[i]);
  36. }
  37. int main()
  38. {
  39. ///freopen("1.in","r",stdin);
  40. ///freopen("1.out","w",stdout);
  41. int nr1,nr2,i,j,ok;
  42. string buff;
  43. char ch;
  44. while(1)
  45. {
  46. nr1=0;nr2=0;
  47. while(1)
  48. {
  49. ok=scanf("%c",&ch);
  50. if(!(ok!=EOF))
  51. return 0;
  52. if(isalpha(ch))
  53. buff+=ch;
  54. else
  55. {
  56. if(!buff.empty())
  57. v1[++nr1]=buff;
  58. buff.clear();
  59. if(ch=='#')
  60. break;
  61. }
  62.  
  63. }
  64. while(1)
  65. {
  66. ok=scanf("%c",&ch);
  67. if(!(ok!=EOF))
  68. return 0;
  69. if(!isalpha(ch))
  70. {
  71. if(!buff.empty())
  72. v2[++nr2]=buff;
  73. buff.clear();
  74. if(ch=='#')
  75. break;
  76. continue;
  77. }
  78. buff+=ch;
  79. }
  80. lcs(nr1,nr2);
  81. for(i=1;i<dp[nr1][nr2];++i)
  82. out(v1[sol[i]]),printf(" ");
  83. out(v1[sol[dp[nr1][nr2]]]);
  84. printf("\n");
  85. }
  86.  
  87. return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement