蓝桥杯-翻硬币
题目链接:https://www.acwing.com/problem/content/1210/
分类:刚开始给一个状态和若干种操作,通过操作可以转换为另外一个状态,求到目的状态的最小操作数
思路::1:进行搜索找到最短路(dfs,bfs);2:打表找到规律,利用规律求解
规律:每个开关可以控制两个灯泡,如果两个需要改变的灯泡相隔为num大于1,则需要依次按下开关,一直到右边的灯泡,需要按下他们的间距的开关才能关闭灯泡,需要按下num次。
代码:
#include<iostream>
#include<vector>
using namespace std;
int main (){
string a,b;
vector<int>ve;
cin>>a>>b;
for(int i=0;i<a.size();i++){
if(a[i]!=b[i])
ve.push_back(i);
}
int ans=0;
for(int i=0;i<ve.size();i+=2){
ans+=(ve[i+1]-ve[i]);
}
cout<<ans;
return 0;
}

浙公网安备 33010602011771号