P1435 回文字串

来源:互联网 发布:迅雷for mac 编辑:程序博客网 时间:2024/05/17 02:41

题目描述

回文词是一种对称的字符串。任意给定一个字符串,通过插入若干字符,都可以变成回文词。此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数。

比如 “Ab3bd”插入2个字符后可以变成回文词“dAb3bAd”或“Adb3bdA”,但是插入少于2个的字符无法变成回文词。

注:此问题区分大小写

输入输出格式

输入格式:

一个字符串(0<strlen<=1000)

输出格式:

有且只有一个整数,即最少插入字符数

输入输出样例

输入样例#1:
Ab3bd
输出样例#1:
2








#include <iostream>#include <cstring>using namespace std;char a[1005];char b[1005];int dp[1005][1005];int n;void hs(){  int i,j;    for(i=1;i<=n;i++)    for(j=1;j<=n;j++)    {            if(a[i]==b[j])                dp[i][j]=dp[i-1][j-1]+1;            else              dp[i][j]=max(dp[i-1][j],dp[i][j-1]);          }}int main(){int i;cin>>a+1;n=strlen(a+1);    for(i=1;i<=n;i++)        b[i]=a[n+1-i];    hs();     cout<<n-dp[n][n]<<endl;    return 0;}


字符串从0开始,bug,0的位置留出来。

做题:30分钟

找坑:(a+1)2小时!!!

1 0
原创粉丝点击