小编bey*_*uma的帖子

求绳子的最小长度

我有以下编程问题:

给定一个整数长度数组作为输入,其中每个元素表示所需绳索的长度,求出原始绳索的最小长度,假设在每一步,你只能是绳索长度的一半,并且每根绳索的长度必须是一个整数。如果不存在这样的绳子,则输出 -1。

关于将长度为 x 的绳索“减半”的附加信息:

  • 如果 x 可被 2 整除,则生成的两条绳的长度为 x/2
  • 否则,生成的两条绳索的长度为 floor(x/2) 和天花板 (x/2)

例如,如果我需要 [3, 5, 2],那么我需要的最小绳索尺寸是 10,因为 '10' 可以分成 2 个 '5',剩下的 '5' 之一可以分成 '3'和'2'。然后,我最终会得到我所需要的 [3, 5, 2]。也允许以不需要的过多绳索结束。

我提供了一个功能,可以确定是否可以将特定长度的绳索分成所需的长度。

我最初想在搜索空间中进行某种二分搜索 [需要绳索的最大长度,___],但我不确定上限应该是多少。此外,我意识到这不一定有效,因为较长的绳索不一定能保证绳索可以分成所需的长度。

现在,我唯一的解决方案是线性搜索,但这似乎太慢了,我不确定会导致没有有效绳索的条件。

非常感谢任何指导!

puzzle algorithm

2
推荐指数
1
解决办法
304
查看次数

标签 统计

algorithm ×1

puzzle ×1