• 洛谷 pP2708 硬币翻转


    题目描述

    从前有很多个硬币摆在一行,有正面朝上的,也有背面朝上的。正面朝上的用1表示,背面朝上的用0表示。现在要求从这行的第一个硬币开始,将前若干个硬币一起翻面,问如果要将所有硬币翻到正面朝上,最少要进行这样的操作多少次?

    输入格式

    一个字符串,由0和1组成,表示硬币状态

    输出格式

    一个数,表示要翻转的最少次数

    输入输出样例

    输入 #1
    10
    输出 #1
    2

    说明/提示

    样例1说明:

    第1次翻转:把第一个硬币翻到反面,字符串为00

    第2次翻转:把第一、二个硬币一起翻到正面,字符串为11,翻转完成,输出2

    硬币个数<=10000

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
     string a;
     int sum=0;
     cin>>a;
     a=a+'1';
     for(int i=1;i<a.size();i++){        //string的计数方法和数组一样,都是从0开始
      if(a[i]!=a[i-1])               //如果和下一个不同,就要反转,因为最后加了一个‘1’,所以肯定最后的时候全是1
      {
       sum++;
      }
     }
     
     cout<<sum;
     return 0;
    }

  • 相关阅读:
    js原生小小总结(二)
    js原生小小总结(一)
    js原生小小总结
    寻找峰值
    第一个错误的版本
    [JSOI2018] 战争
    CF232E Quick Tortoise
    [JLOI2015] 骗我呢
    CF1428G Lucky Numbers
    CF1239E Turtle
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11621559.html
Copyright © 2020-2023  润新知