💒题目描述
来源:acwing
原题传送门
🌟解题报告
观察样例
题目中要求:每次只能同时翻转相邻的两个硬币。那么,我们可以把每个硬币当做一个灯泡,两个相连的硬币就变成了一个开关。回到了我们熟悉的开关模型,而且是一维的,解决的方式就可以直接递推枚举,然后比较当前位置和最终状态是否相同,不同的话就"摁"一下"开关"。
对于题目所给的样例,实际是按照如下的方式进行的。
🌻参考代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 110;
int n;
char start[N],ans[N];//分别表示初始给的字符串和答案最终要的字符串
void turn (int x)
{
if(start[x] == '*') start[x] = 'o';
else start[x] = '*';
}
int main()
{
cin >> start >> ans;
n = strlen(start);
int res = 0;
for(int i = 0; i < n-1;i++)
if(start[i] != ans[i])
{
turn(i),turn(i+1);
res ++;
}
cout << res << endl;
return 0;
}