Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ```c
- #include <iostream>
- #include <algorithm>
- #include <vector>
- #include <cstdlib>
- using namespace std;
- int dp[10000][10000];
- int cal(vector<int> &vec , int i , int j)
- {
- if (i==j)
- {
- return 0;
- }
- if (i > j){
- return 0;
- }
- if (dp[i][j] !=-1)
- {
- return dp[i][j];
- }
- if(vec[i] != vec[j])
- {
- dp[i][j] = cal(vec, i + 1, j) + cal(vec, i, j - 1) - cal(vec, i + 1, j - 1);
- }
- if(vec[i]==vec[j])
- {
- dp[i][j] = 1 + cal(vec, i , j - 1)+cal(vec, i + 1, j);
- }
- return dp[i][j];
- }
- int main()
- {
- int n;
- cin>>n;
- vector<int>vec;
- for (int i = 0; i < n; i++)
- {
- int a;
- cin>>a;
- vec.push_back(a);
- }
- for (int j = 0; j < n; j++)
- {
- for (int l = 0; l < n; l++)
- {
- dp[j][l]=-1;
- }
- }
- cout<<cal(vec , 0 , n-1);
- }```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement