蓝桥杯 翻硬币 C++
1.思路:
1.题目隐含条件是从初状态一定能翻到终状态,即对应的硬币有偶数个相反的
例如:****** o和*******就不能完成
2.一趟循环,碰到相反的就翻转一次
3.贪心算法
2.代码:
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>
#define ll long long
using namespace std;
int main() {
string str1,str2;
cin>>str1>>str2;
int sum=0;//翻转次数
int len=str1.length();
//可以保证一趟遍历完成翻转
for(int i=0; i<len-1; i++) {
if(str1[i]!=str2[i]) {
//不用翻转str[i]
if(str1[i+1]=='*')
str1[i+1]='o';
else
str1[i+1]='*';
sum++;
}
}
cout<<sum<<endl;
return 0;
}