您的位置:首页 > 其它

NYOJ 37

2016-07-25 22:19 387 查看
回文字符串

时间限制:3000 ms | 内存限制:65535 KB

难度:4

描述

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。

输入

第一行给出整数N(0

#include<cstring>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
#define mod 1000000007
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
typedef long long LL;

int n,lena,lenb;
int dp[1005][1005];
string a,b;

int main()
{
scanf("%d",&n);
for(int k=1;k<=n;k++){
cin>>a;
b=a;
reverse(a.begin(),a.end());
lena=a.length();
memset(dp,0,sizeof(dp));
for(int i=1;i<=lena;i++){
for(int j=1;j<=lena;j++){
if(a[i-1]==b[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
printf("%d\n",lena-dp[lena][lena]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: