CodeForces 1027A-Palindromic Twist

  • CodeForces 1027A-Palindromic Twist


  • 题目链接:

A. Palindromic Twist

  • 思路:

题目大意:

给定一个长度为n的字符串,规定每个字符可以转变为相邻字符 ,比如 c->b,c->d,当然z只能变成y,a只能变成b,要求字符串中每个字符都必须转变一次,能否变成回文字符串(左右读都一样)

题解:

很高兴 a z不能互转,不然还需分开讨论

折半对称问题,其实就是问每个字符和对称面字符(i 与 n-i-1)改变一次后能不能相等

a.两个字符的ASCII码差距大于2,显然这种情况下不可能改变后相等

b.差距为2(中间隔着一个字符),两个字符都变成它们中间那个字符

c.差距为一(相邻),两个字符都要改变,不可能

d.两个字符相等,转成相同的就可以

  • 代码:

#include
#include
#include
using namespace std;
#define MAX_SIZE 105
char Str[MAX_SIZE];
int main()
{
    int T,n;
    cin>>T;
    while(T--)
    {
        int flag=0;
        cin>>n;
        cin>>Str;
        for(int i=0;i

 

你可能感兴趣的:(字符串)