Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<sstream>
- #include<cstdlib>
- #include<cctype>
- #include<cmath>
- #include<algorithm>
- #include<set>
- #include<queue>
- #include<stack>
- #include<list>
- #include<iostream>
- #include<fstream>
- #include<numeric>
- #include<string>
- #include<vector>
- #include<cstring>
- #include<map>
- #include<iterator>
- using namespace std;
- char s[5010];
- int n,dp[5010][5010];
- int count(int i,int n)
- {
- if(dp[i][n]!=-1)
- return dp[i][n];
- if(i>=n)
- return 0;
- if(s[i]==s[n])
- return dp[i][n]=count(i+1,n-1);
- else
- return dp[i][n]=min(count (i+1,n)+1,count(i,n-1)+1);
- }
- int main()
- {
- memset(dp,-1,sizeof dp);
- cin >> n;
- getchar();
- gets(s);
- int i=count(0,n-1);
- cout << i << "\n" ;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement