通过模拟观察 我们发现
按一下会改变相邻两个硬币的状态
将硬币排成一排
从对位置下标为5到下标为7
依次翻其本身和其右边的硬币
对5,6,7操作
操作次数为3
此时我们只改变了硬币5和硬币8的状态
因此
每两处不一样的地方,我们想改变其状态
只需要后面的下标减去前面的下标即可获得操作次数
所以我们检查读入和目标不一样的地方
两两一组进行操作 即可
#include<iostream>
#include<cstring>
#include <cstdio>
#include<algorithm>
using namespace std;
char g[110],target[110];
int temp;
int main(){
cin>>g;
cin>>target;
int ans=0,cnt=0;
//cout<<g<<endl<<target;
for(int i=0;i<sizeof g;i++){
if(g[i]!=target[i]){
//用cnt计下不一样的地方数
cnt++;
if(cnt==1){
temp=i;
//存下前一个不一样位置的下标
}
if(cnt==2){
//两两一组 进行操作
ans+=i-temp;
cnt=0;
//计数器清零
}
}
}
cout<<ans;
return 0;
}