Advertisement
Guest User

Untitled

a guest
Sep 19th, 2021
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. ```c
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <cstdlib>
  6. using namespace std;
  7. int dp[10000][10000];
  8. int cal(vector<int> &vec , int i , int j)
  9. {
  10. if (i==j)
  11. {
  12. return 0;
  13. }
  14. if (i > j){
  15. return 0;
  16. }
  17. if (dp[i][j] !=-1)
  18. {
  19. return dp[i][j];
  20. }
  21. if(vec[i] != vec[j])
  22. {
  23. dp[i][j] = cal(vec, i + 1, j) + cal(vec, i, j - 1) - cal(vec, i + 1, j - 1);
  24. }
  25. if(vec[i]==vec[j])
  26. {
  27. dp[i][j] = 1 + cal(vec, i , j - 1)+cal(vec, i + 1, j);
  28. }
  29. return dp[i][j];
  30. }
  31. int main()
  32. {
  33. int n;
  34. cin>>n;
  35. vector<int>vec;
  36. for (int i = 0; i < n; i++)
  37. {
  38. int a;
  39. cin>>a;
  40. vec.push_back(a);
  41. }
  42. for (int j = 0; j < n; j++)
  43. {
  44. for (int l = 0; l < n; l++)
  45. {
  46. dp[j][l]=-1;
  47. }
  48.  
  49. }
  50.  
  51. cout<<cal(vec , 0 , n-1);
  52.  
  53. }```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement