poj1159

来源:互联网 发布:网络知识安全竞赛2017 编辑:程序博客网 时间:2024/06/05 10:00
#include
#include
#include
using namespace std;
int main(){
int n;
 while(cin>>n&&n>=3&&n<=5000){
  char c[5001],d[5001];
  int dp[2][5001];
  getchar();
for(int i=1;i<=n;i++)
{
cin>>c[i];
d[n-i+1]=c[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
  for(int j=1;j<=n;j++)
  {
 dp[i%2][j]=max(dp[(i-1)%2][j],dp[i%2][j-1]);
  if(c[i]==d[j])
  dp[i%2][j]=max(dp[i%2][j],1+dp[(i-1)%2][j-1]);
  }
  cout<<n-dp[n%2][n]<<endl;
  }
  return 0;
}
0 0
原创粉丝点击