标签:
Description
Input
Output
Sample Input
5 Ab3bd
Sample Output
2
解题思路:这是一个回文串问题,题目的意思是输入一个字符串,求出将其变成一个回文串需要插入字符的最少数。可以用动态规划法,使用dp用状态转移方程。
程序代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
short dp[5005][5005];
char a[5005];
char b[5005];
int main(){
int n,i,j;
while(scanf("%d",&n)!=EOF){
scanf("%s",a+1);
strcpy(b,a+1);
for( i=0;i<=n;i++){
dp[i][n]=0;
}
for( j=0;j<=n;j++){
dp[0][j]=0;
}
for( i=1;i<=n;i++){
for( j=n-1;j>=0;j--){
if(a[i]==b[j]){
dp[i][j]=dp[i-1][j+1]+1;
}
else{
dp[i][j]=((dp[i-1][j])>(dp[i][j+1]))?(dp[i-1][j]):(dp[i][j+1]);
}
}
}
int res=n-dp[n][0];
printf("%d\n",res);
}
return 0;
}
2015 HUAS Summer Trainning #5~G
标签:
原文地址:http://www.cnblogs.com/chenchunhui/p/4732581.html