【问题标题】:Divide binary array into three parts such that each part represent same decimal将二进制数组分成三部分,使每一部分代表相同的十进制
【发布时间】:2018-07-09 16:23:27
【问题描述】:

给定一个二进制数组,将数组分成三部分,每部分代表相同的小数。

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 开始迭代并检查每个小数是否可以将数组分成三个相等的部分。

是否有任何有效的算法。

【问题讨论】:

  • 计算个数(3的倍数)并正确拆分。根据右侧部分的值调整拆分位置(其值不能更改)
  • 您是否需要检测到没有解决方案是可能的?并非所有二进制数组都可以按照您描述的方式进行拆分。
  • @Jim Mischel 我们必须确定是否可以以这种方式拆分数组

标签: algorithm


【解决方案1】:

计算设置的位数。如果这个数字不能被三整除,则没有解决方案。说它是,并且有 3k 个设置位。找到第一个、k+1 和 2k+1 个设置位的位置。不断增加所有三个位置并进行比较,直到到达最后一个设置位或出现分歧。如果您在所有三个都同意的情况下到达最后一个设置位,那么您就有了解决方案。

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 2012-05-28
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多