如题所说,如果看得懂真的比较简单。
其实只要从左往右扫,如果这个硬币与下个硬币状态不同,就说明要翻一次。最后还得判断最后一个是不是0,如果是0还要再翻一次,因为题目说要全部正面朝上,就是全部为1,最后一位为0就说明翻完后全是0,还要再翻一次。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
string s;//要翻转的硬币串。
cin>>s;
int sum=0;//计数。
int len=s.length();//用一个变量存储,防止重复计算长度。
for(int i=0;i<len-1;i++)
{
if(s[i]!=s[i+1])//如果当前硬币与下一个硬币状态不同,说明要翻一次。
sum++;
}
if(s[len-1]=='0')//最后一位是0,还要再翻一次。
sum++;
cout<<sum;//输出。
}