• cf 1006 D. Two Strings Swaps


    这道题要考虑每个位置和他相对位置上面有几个不相同的字符,如果四个都不同,就修改两个。如果三个不同,而a[i]==a[n-i+1],则修改两个,其余情况修改一个,如果两个不同,则不需要修改

    主要看a,b串相对位置上的值不同的有几个,这样会好讨论很多。

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n;
        scanf("%d",&n);
        string a,b;
        cin>>a;
        cin>>b;
        a='0'+a;
        b='0'+b;
        int res=0;
        for(int i=1;i<=n/2;i++)
        {
            //printf("%d
    ",i);
            if(a[i]==b[i])
            {
                if(a[n-i+1]!=b[n-i+1])
                   res++;
            }
            else
            {
                if(a[i]==a[n-i+1]&&b[i]==b[n-i+1]||a[i]==b[n-i+1]&&b[i]==a[n-i+1])
                {
                    continue;
                }
                else if(a[i]==b[n-i+1]||b[i]==a[n-i+1]||a[n-i+1]==b[n-i+1]||b[i]==b[n-i+1])
                   res++;
                else 
                   res+=2;
            }
            //printf("**%d
    ",res);
        }
        if(n%2==1)
        {
            if(a[n/2+1]!=b[n/2+1])
              res++;
        }
        printf("%d
    ",res);
    }
  • 相关阅读:
    Jzoj4729 道路修建
    Jzoj4727 挺进
    Jzoj4727 挺进
    Jzoj4726 种花
    Jzoj4726 种花
    Jzoj4725 素数序列
    Jzoj4725 素数序列
    力扣算法题—040组合求和二
    力扣算法题—039组合求和
    力扣算法题—038报数
  • 原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/10309727.html
Copyright © 2020-2023  润新知