#include<bits/stdc++.h>
using namespace std;
int l/*字符串长度*/,tot/*翻转次数*/;
char c[10001];
int main()
{
cin>>c; //输入硬币正反
l=strlen(c); //l为硬币个数
for(int i=l;i>=1;i--) //
c[i]=c[i-1]; //将硬币标号从0——n-1变为1——n(个人习惯啦)
while(1)
{
for(int i=1;i<=l;i++) //先从头到尾找一遍
{
if(c[i]=='0') //只要遇到0说明还得再翻
break; //跳出for执行下面的
else
if(i==l)//若一直找到最后都是1,那么恭喜啦,硬币都已翻到正面!!
{
cout<<tot; //输出总数
return 0; //程序结束!!
}
}
char a=c[1]; //记录当前第一个硬币的正反
for(int i=1;i<=l;i++)
{
if(a=='0') //若第一个硬币是反的
{
if(c[i]==a) //那只要遇到反的
c[i]='1'; //都翻成正的
else //若遇到了正的
break; //就翻完了一遍,跳出即可
}
else //若第一个硬币是反的
if(a=='1')
{
if(c[i]==a) //那只要遇到正的
c[i]='0'; //都翻成反的
else //若遇到了反的
break; //就翻完了一遍,跳出即可
}
}
tot++; //翻硬币的总数加一
}
return 0;
}
P2708 硬币翻转
最新推荐文章于 2024-09-14 22:25:23 发布