洛谷-翻硬币

在这里插入图片描述

如题所说,如果看得懂真的比较简单。

其实只要从左往右扫,如果这个硬币与下个硬币状态不同,就说明要翻一次。最后还得判断最后一个是不是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;//输出。
}

猜你喜欢

转载自blog.csdn.net/weixin_52045928/article/details/121870379
今日推荐