CodeForces 1027A-Palindromic Twist

旧城等待, 2022-05-15 10:16 264阅读 0赞
  • 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()
    {

    1. int T,n;
    2. cin>>T;
    3. while(T--)
    4. {
    5. int flag=0;
    6. cin>>n;
    7. cin>>Str;
    8. for(int i=0;i<n/2;i++)
    9. {
    10. if(abs(Str[i]-Str[n-i-1])==2||abs(Str[i]-Str[n-i-1])==0)
    11. continue;
    12. else
    13. {
    14. flag=1;
    15. break;
    16. }
    17. }
    18. if(flag)
    19. cout<<"NO"<<endl;
    20. else
    21. cout<<"YES"<<endl;
    22. }
    23. return 0;

    }

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Twisted

    Twisted是用Python实现的基于事件驱动的网络引擎框架。Twisted诞生于2000年初 github又一个项目:https://github.com/luochen