均分01(from pongo)
2013-12-31 13:01
441 查看
问题:
给定一个字符串,长度不超过100,其中只包含字符0和1,并且字符0和1出现的次数都是偶数。你可以把字符串任意切分,把切分后的字符串任意分给两个人,让两个人得到的0的总个数相等,得到的1的总个数也相等。
例如,输入串是010111,我们可以把串切位01, 011,和1, 把第1段和第3段放在一起分给一个人,第二段分给另外一个人,这样每个人都得到了1个0和两个1。我们要做的是让切分的次数尽可能少。
输入是这样一个字符串,输出是最少的切分次数,保证输入合法。
注:题目一定有解,因为我们最差情况时,把字符串切分(n - 1)次形成n个长度为1的串。
做法:
取n/2长子串移动,容易知道移动过程中必然会出现其中有一半1一半0的时候。只需判断是否前n/2满足要求,如满足须1次切分,如不满足则须两次切分。
代码如下:
给定一个字符串,长度不超过100,其中只包含字符0和1,并且字符0和1出现的次数都是偶数。你可以把字符串任意切分,把切分后的字符串任意分给两个人,让两个人得到的0的总个数相等,得到的1的总个数也相等。
例如,输入串是010111,我们可以把串切位01, 011,和1, 把第1段和第3段放在一起分给一个人,第二段分给另外一个人,这样每个人都得到了1个0和两个1。我们要做的是让切分的次数尽可能少。
输入是这样一个字符串,输出是最少的切分次数,保证输入合法。
注:题目一定有解,因为我们最差情况时,把字符串切分(n - 1)次形成n个长度为1的串。
做法:
取n/2长子串移动,容易知道移动过程中必然会出现其中有一半1一半0的时候。只需判断是否前n/2满足要求,如满足须1次切分,如不满足则须两次切分。
代码如下:
class Test { public: static int howmany (string str) { int i, m =0, n=0, tmpm=0, tmpn=0; for(i=0;i<str.length();i++) { if(str[i]=='0') m++; else n++; } for(i=0;i<(m+n)/2;i++) { if(str[i]=='0') tmpm++; else tmpn++; } if(tmpm==m/2 && tmpn==n/2) return 1; else return 2; } };
相关文章推荐
- pongo(英雄会)题解之均分01
- 【构建二叉树】01根据前序和中序序列构造二叉树【Construct Binary Tree from Preorder and Inorder Traversal】
- 均分01
- 覆盖数字(from pongo)
- 均分01
- 均分01【解】--英雄会
- 01均分
- 三元组的数量(from pongo)
- 英雄会 高校俱乐部 题解(均分01)
- AJAX教程01(From w3schools)译读
- 【20100416-01】AE中IWorkspaceFactory.Openfromfile中出错的问题
- From Apprentice To Artisan 01
- Chapter 06-Displaying Data From multiple Tables - 01
- 邮票分你一半 N个数最大可能均分 01背包问题
- Java From The Beginning 01
- From《Expert C Programming》01
- BAPI_SALESDOCU_CREATEFROMDATA1--VA01
- 均分01
- UVA562(01背包均分问题)
- BAPI_SALESDOCU_CREATEFROMDATA1--VA01