一二三四五 上山打老虎

蓝桥杯-翻硬币

题目链接: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;
}
posted @ 2021-04-08 14:54  黒川川  阅读(43)  评论(0)    收藏  举报