比赛 假期找点事儿做题吧 评测结果 AAAAAAAAAA
题目名称 回文词 最终得分 100
用户昵称 玉带林中挂 运行时间 0.621 s
代码语言 C++ 内存使用 95.73 MiB
提交时间 2017-06-08 16:11:19
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int opt[5001][5001];
char s1[5001]={'\0'};
char s2[5001]={'\0'};
int main()
{
		freopen("palin.in","r",stdin);
		freopen("palin.out","w",stdout);
       int n;
       scanf("%d",&n);
	   scanf("%s",s1);
       int  i;
       int j=1;
       for (i=n-1;i>=0;i--)
       {
              s2[j]=s1[i];
              j++;
			  s1[i+1]=s1[i];
       }
       for (i=1;i<=n;i++)
       {
              for (j=1;j<=n;j++)
              {
                     if (s1[i]==s2[j])
                     {
                            opt[i][j]=opt[i-1][j-1]+1;
                     }
                     else
                     {
                            if (opt[i][j-1]>opt[i-1][j])
                            {
                                   opt[i][j]=opt[i][j-1];
                            }
                            else    opt[i][j]=opt[i-1][j];
                     }
              }
       }
       printf("%d\n",n-opt[n][n]);
       return 0;
}