题意
给你一个字符串,要求必须添加一个字符,问是否可能形成回文串,如果可能,输出任意一个,如果不可能,输出”NA”
思路
由于题目数据范围不大,我们可以考虑在每一位添加字符,然后去判断,不过为了满足可能成立的回文串条件,新添的字符一定要跟其对称位相等,如果它的对称位为它自己,那干脆就让它是’a’,判断出有回文串就可以输出然后结束了,如果所有都不成立,就是不可能。
代码
#include <cstdio>
#include <cstring>
char s[20],t[20];
bool test(int x,int l)
{
for(int i=0;i<x;i++)
t[i]=s[i];
for(int i=x;i<l;i++)
t[i+1]=s[i];
t[x]='a';
t[x]=t[l-x];
for(int i=0;i<=l;i++)
if(t[i]!=t[l-i])
return false;
return true;
}
int main()
{
int l,f=0;
scanf("%s",s);
l=strlen(s);
for(int i=0;i<=l;i++)
{
if(test(i,l)==true)
{
printf("%s\n",t);
f=1;
break;
}
}
if(f==0)
printf("NA\n");
return 0;
}