免费网站设计定制/windows10优化工具
交换的条件是很苛刻的
只允许a的对称字母换,b的对称字母换,a和b的对应位置换
那么ai、an−i+1、bi、bn−i+1是一个整体那么a_i、a_{n-i+1}、b_i、b_{n-i+1}是一个整体那么ai、an−i+1、bi、bn−i+1是一个整体
其他位置的字母不会换到这个集合中来,这个集合却可以彼此交换其他位置的字母不会换到这个集合中来,这个集合却可以彼此交换其他位置的字母不会换到这个集合中来,这个集合却可以彼此交换
到了这里确实非常简单了,但是别以为已经做完了!!\color{Red}到了这里确实非常简单了,但是别以为已经做完了!!到了这里确实非常简单了,但是别以为已经做完了!!
如何正确的考虑这个集合要修改的次数也是个问题
这里解释的不错
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int n,ans;
char a[maxn],b[maxn];
int main()
{cin >> n >> (a+1) >> (b+1);for(int i=1;i<=n/2;i++){char q=min(a[i],a[n-i+1]),w=max(a[i],a[n-i+1]);char sq=min(b[i],b[n-i+1]),sw=max(b[i],b[n-i+1]);if(sq==q&&sw==w) continue;else if(q==w&&sw==sq) continue;//以上是完全相同的情况 else if(sq==q||sq==w||sw==q||sw==w) ans++;//有1个相同else if(sq==sw) ans++;//只需要换a的1个字母 else ans+=2;}if( n%2==1 && a[n/2+1]!=b[n/2+1] ) ans++;cout<<ans;
}