Advertisement
Guest User

Untitled

a guest
May 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4.  
  5. int main()
  6. {
  7. ios_base::sync_with_stdio(0);
  8. freopen("input.txt", "r", stdin);
  9. freopen("output.txt", "w", stdout);
  10. string s1, s2;
  11. cin >> s1;
  12. for (int i = s1.length() - 1; i >= 0; --i)
  13. {
  14. s2 += s1[i];
  15. }
  16. int n = s1.length();
  17. vector< vector <int > > dp(n, vector<int>(n, 0));
  18.  
  19. for (int i = 0; i < n; ++i)
  20. {
  21. for (int j = 0; j < n; ++j)
  22. {
  23. if (s2[i] == s1[j])
  24. {
  25.  
  26. if (j > 0 && i > 0)
  27. {
  28. dp[i][j] = dp[i - 1][j - 1] + 1;
  29. }
  30. else
  31. dp[i][j] = 1;
  32. }
  33. else if (s2[i] != s1[j])
  34. {
  35. if (i > 0 && j > 0)
  36. {
  37. //cout << i << s1[i] << " " << j << s2[j] << endl;
  38. dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
  39. }
  40. else if (j <= 0 && i > 0)
  41. {
  42. dp[i][j] = dp[i - 1][j];
  43. }
  44. else if (i <= 0 && j > 0)
  45. {
  46. dp[i][j] = dp[i][j - 1];
  47. }
  48.  
  49.  
  50. }
  51.  
  52. }
  53. }
  54. for (int i = 0; i < n; ++i)
  55. {
  56. for (int j = 0; j < n; ++j)
  57. {
  58. cout << dp[i][j] << " " ;
  59. }
  60. cout << endl;
  61. }
  62. string otv = "";
  63. dp[0][0] = 0;
  64. int ii = n - 1, jj = n - 1;
  65. while (dp[ii][jj] != 0 )
  66. {
  67. while (dp[ii][jj] == dp[ii][jj - 1])
  68. {
  69. jj--;
  70. if ( s2[ii] == s1[jj] )
  71. {
  72. otv += s2[ii];
  73. jj--;
  74. ///cout << s2[ii] << endl;
  75. }
  76. }
  77. if ( s2[ii] == s1[jj] )
  78. {
  79. otv += s2[ii];
  80. jj--;
  81. }
  82. cerr << " 1 ";
  83. ii--;
  84. }
  85. //cout << dp[3][2] << " " << s1[3] << s2[2];
  86. cout << dp[n - 1][n - 1] << endl << otv;
  87. if (s1[0]==s1[s1.length() - 1]){cout << s1[0];}
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement