贪心法
先将字符串转换为布尔数组01
然后从第一个开始比较,如果不同就翻相邻的两个硬币并计数+1
先将字符串转换为布尔数组01
然后从第一个开始比较,如果不同就翻相邻的两个硬币并计数+1
直到结束,一定是最少翻的
#include<iostream>
#include<cstdio>
#include<cstring>
char str1[1005];
char str2[1005];
int ans1[1005];
int ans2[1005];
int Count=0;
int main()
{
scanf("%s",str1);
scanf("%s",str2);
int len=strlen(str1);
for(int i=0;i<len;i++)
{
if(str1[i]=='*')ans1[i]=1;
if(str1[i]=='o')ans1[i]=0;
}
for(int i=0;i<len;i++)
{
if(str2[i]=='*')ans2[i]=1;
if(str2[i]=='o')ans2[i]=0;
}
for(int i=0;i<len;i++){
if(ans1[i]!=ans2[i]){
ans1[i]=!ans1[i];
ans1[i+1]=!ans1[i+1];
Count++;
}
}
printf("%d",Count);
/*for(int i=0;i<len;i++)printf("%d",ans1[i]);
printf("\n");
for(int i=0;i<len;i++)printf("%d",ans2[i]);*/
return 0;
}