检查是否可以通过在 Python 中添加或减去给定的秒数来回到 12 点钟


假设我们有一个包含 n 个不同秒数值的数组。我们必须检查是否可以从 12 点钟开始,仅通过添加或减去给定的秒数回到 12 点。我们可以精确地使用所有给定的秒数一次,我们可以添加或减去它。

因此,如果输入类似于 seconds = [40,90,50],则输出将为 True,因为它可以先添加 40,然后减去 90,然后再次添加 50。

为了解决这个问题,我们将遵循以下步骤:

  • size := 2^(秒数组的长度)
  • 对于 c 从 0 到 size - 1,执行
    • add := 0
    • 对于 j 从 0 到 seconds 的大小 - 1,执行
      • 如果 c AND (2^j) 不为零,则
        • add := add + seconds[j]
      • 否则,
        • add := add - seconds[j]
    • 如果 add 可以被 (24 * 60) 整除,则
      • 返回 True
  • 返回 False

示例

让我们看看以下实现以更好地理解:

 实时演示

def solve(seconds):
   size = 2**len(seconds)
   for c in range(size):
      add = 0
      for j in range(len(seconds)) :
         if c & (1 << j):
            add += seconds[j]
         else:
            add -= seconds[j]
      if add % (24 * 60) == 0:
         return True
   return False
seconds = [40,90,50]
print(solve(seconds))

输入

[40,90,50]

输出

True

更新于:2021 年 1 月 18 日

63 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.