AcWing 1208. 翻硬币
原题链接
简单
作者:
海里长蘑菇
,
2024-03-24 17:51:13
,
所有人可见
,
阅读 1
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 120;
int ans;
char sta[N],enad[N]; //end[N]有与关键字撞的概率
void turn(int a)
{
if(sta[a] == '*') sta[a] = 'o';
else sta[a] = '*';
}
int main()
{
cin>>sta>>enad;
int l = strlen(sta);
for(int i = 0 ; i < l ; i++)
{
if(sta[i] != enad[i])
{
turn(i),turn(i+1);
ans++;
}
}
cout<<ans;
}
学一个string的写法
#include <iostream>
#include <string>
using namespace std;
const int N = 110;//用不到,看范围就直接写了
int main()
{
string s1, s2;//s1:初始状态,s2:目标状态
int cnt = 0;//记录翻转次数
cin >> s1 >> s2;
for (int i = 0; i < s1.size() - 1; i++)
{
if (s1[i] != s2[i])//第 i 个位置上状态不同,就翻转该位置和后一个位置硬币
{
cnt++;//翻转一次硬币
if (s1[i] == '*') s1[i] = 'o';//翻转 i 位置上的硬币
else s1[i] = '*';
if (s1[i+1] == 'o') s1[i+1] = '*';//翻转 i + 1 位置上的硬币
else s1[i+1] = 'o';
}
}
cout << cnt;//输出翻转次数
}