原题链接
题意
给你硬币的原始状态和目标状态,问硬币变为目标状态最少需要几次操作
思路
1.分析题目是怎么进行变换的
2.应该什么时候进行计数
3.怎样判断操作使操作数最少
坑点
1.无
算法一:递推
实现步骤
1.硬币的表示是两个字符,所以要用字符串
2.遍历字符串,进行判断具体哪里两个串不同
3.进行记录使操作数最少
代码
#include <iostream>
#include <string>
using namespace std;
string a, b;//定义两个字符串
int ans = 0;//进行计数
int main()
{
cin >> a >> b;//读入
for(int i = 0; i < a.size() - 1; i++) //进行遍历
{
if(a[i] != b[i]) //如果两个串相同位置不同
{
if(a[i] == 'o')//进行模拟 ,当该位置为 o
{
a[i] = '*';//则变为 *
}
else//相反
{
a[i] = 'o';//则变为 o
}
if(a[i + 1] == 'o')//同样的,下一个位置也同样 需要变
{
a[i + 1] = '*';//变为相反的 *
}
else //同样变为相反的 o
{
a[i + 1] = 'o';
}
ans++;//在这里进行计数
}
}
cout << ans << endl;//最终输出次数
return 0;
}