Codeforces Round #498 (Div. 3) D Two Strings Swaps(思维)

这里链接
好像没什么说的。。直接看代码吧。
解析:

#include<bits/stdc++.h>
using namespace  std;
#define ll long long
#define pb push_back
#define inf 2099999999
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rep1(i,a,b) for(int i=a;i>=b;i--)
const int N=1e5+10;
int arr[N];
int main()
{
    #ifdef LOCAL_DEFINE
        freopen("D://rush.txt", "r", stdin);
    #endif
    ios::sync_with_stdio(false),cin.tie(0);
    int n;
    string a,b;
    cin>>n>>a>>b;
    int cnt=0;
    for(int q=0;q<n/2;q++)
    {
        char c[]={a[q],a[n-q-1],b[q],b[n-q-1]};
        int mi=2;
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {

                if(i!=j&&c[i]==c[j])
                {
                    int k=0,q=0;
                    while(k==i||k==j) k++;
                    while(q==i||q==j||q==k) q++;
                    //cout<<i<<' '<<j<<' '<<k<<' '<<q<<endl;
                    if(c[k]!=c[q])
                    {
                        if(k==0||k==1||q==0||q==1)
                            mi=min(mi,1);

                    }
                    else
                        mi=min(mi,0);
                }
            }
        }
        cnt+=mi;
    }
    if((n&1)&&a[n/2]!=b[n/2]) cnt++;
    cout<<cnt<<endl;
}

猜你喜欢

转载自blog.csdn.net/ffgcc/article/details/81134576