Codeforces 505A Mr. Kitayuta's Gift 题解

题意
给你一个字符串,要求必须添加一个字符,问是否可能形成回文串,如果可能,输出任意一个,如果不可能,输出”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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值