思想
我们先将两个字符串转化为整数数组aa,bb.然后我们通过^操作,对 aa[i]和aa[i+1]进行操作.我们把操作过程存储到vector里
操作完之后我们判断aa和bb是否相等.如果相等的话说明经过我们的操作变两个字符串变为相等的了,这个时候输出vector里面存储的过程步骤.
否则的话说明aa和bb不能变成一样的,输出-1即可.
code
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int main()
{
cin.tie(nullptr)->sync_with_stdio(false);
int n;cin>>n;
string a;cin>>a;
string b;cin>>b;
vector<int> aa(n);
for(int i=0;i<n;i++)
{
aa[i]=a[i]-'0';
}
vector<int>bb(n);
for(int i=0;i<n;i++)
{
bb[i]=b[i]-'0';
}
vector<PII> ans;
for(int i=0;i+1<n;i++)
{
if(aa[i]!=bb[i])
{
aa[i]^=1;
aa[i+1]^=1;
ans.push_back({i,i+1});
}
}
if(aa==bb)
{
cout<<ans.size()<<endl;
for(auto [x,y]:ans)
{
cout<<x+1<<" "<<y+1<<endl;
}
}
else cout<<-1<<endl;
return 0;
}