P1435 回文字串

题目描述

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

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

注:此问题区分大小写

输入输出格式

输入格式:

一个字符串(0

输出格式:

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

输入输出样例

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








#include 
#include 
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<


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

做题:30分钟

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

你可能感兴趣的:(DP,洛谷)