zoukankan      html  css  js  c++  java
  • 英雄会 高校俱乐部 题解(均分01)

    题目:

             给定一个字符串,长度不超过100,其中只包含字符0和1,并且字符0和1出现得次数都是偶数。你可以把字符串任意切分,把切分后得字符串任意分给两个人,让两个人得到的0的总个数相等,得到的1的总个数也相等。 例如,输入串是010111,我们可以把串切位01, 011,和1, 把第1段和第3段放在一起分给一个人,第二段分给另外一个人,这样每个人都得到了1个0和两个1。我们要做的是让切分的次数尽可能少。 输入是这样一个字符串,输出是最少的切分次数,保证输入合法。题目一定有解,因为我们最差情况时,把字符串切分(n - 1)次形成n个长度为1的串。


    分析:

          一开始看这题目觉得很困难,但是这题目就是一道水题。

            思路就是:看中间一刀能不能平分,不然的话,可以考虑成一个圆环(头尾可以接起来嘛!),总是能找到一条半径平分。(这时就是2刀搞掂。)

     代码:

      

    #include <stdio.h>
    #include <iostream>
    #include <string>
    using namespace std;
    class Test {
    public:
        static int howmany (string   s)
        {
        int i,n1=0,n0=0,len=s.length();
       for(i=len-1;i>len/2;i--)
          if(s[i]-'0'==1){
            n1++;
          }else{
            n0++;
          }
      
       for(i=0;i<len/2;i++){
           if(s[i]-'0'==1){
            n1--;
          }else{
            n0--;
          }
       }
       if(n1==0&&n0==0){
         return 1;
       }
          return 2;
              }
    };
    //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
    int main()
    {
        cout<<Test::howmany("100010")<<endl;
    }
    //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
    

           

  • 相关阅读:
    PHP写一段代码,确保多个进程同时写入一个文件成功
    PHP中的中文截取乱码问题_gb2312_utf-8
    TortoiseSVN使用详细步骤
    限制页面内部链接访问源-HTML注释
    Redis配置文件解读
    window下部署php_redis扩展
    js延迟加载,提升网页加载速度
    HTML5 LocalStorage 本地存储
    静态HTML页面不缓存js文件的方法
    寻找幸运数
  • 原文地址:https://www.cnblogs.com/dengyaolong/p/3697225.html
Copyright © 2011-2022 走看看