翻硬币

Posted lukelmouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻硬币相关的知识,希望对你有一定的参考价值。

翻硬币

先手动模拟一遍过程,会发现解是具有唯一性的。

所以 唯一解就是最小步数,(O(n)) ,直接扫一遍就好了

#include <bits/stdc++.h>
using namespace std;
#define endl '
'
typedef long long LL;
typedef pair<int,int> PII;
const int N = 110;
char str[N],endi[N];
void turn(int x) {
    if(str[x] == '*') str[x] = 'o';
    else str[x] = '*';
}
int main() {
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin >> str >> endi;
    int len = strlen(str);
    int res = 0;
    for(int i = 0;i < len - 1; ++i) {
        if(str[i] != endi[i]) {
            res ++;
            turn(i);
            turn(i + 1);
        }
    }
    cout << res << endl;
    return 0;
}

以上是关于翻硬币的主要内容,如果未能解决你的问题,请参考以下文章

翻硬币

翻硬币 -- 蓝桥杯

历届试题 翻硬币-(贪心)

[BZOJ 3517]翻硬币

从翻硬币游戏看敏捷开发

Bzoj3517 翻硬币题解