将二进制数组分为三部分,以便每一部分代表相同的小数

时间:2018-07-09 16:23:27

标签: algorithm

给出一个二进制数组,将数组分为三部分,以便每一部分代表相同的小数。

Eg arr[] = {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}

上面的数组可以按以下方式划分:

{1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1}. Now each part represent same decimal.

一种简单的方法是从1开始迭代,并检查每个小数点是否可以将数组分为三个相等的部分。

有什么有效的算法吗?

1 个答案:

答案 0 :(得分:0)

计数设置的位数。如果这个数字不能被三整除,没有解决方案。说的是,并且有3k个设置位。查找第一个,k + 1和2k + 1个设置位的位置。不断增加所有三个位置并进行比较,直到到达最后一个设置的位或出现分歧为止。如果三个人都同意的话到达最后一个设定位,那么您有解决方案。