檢查是否可以透過在 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.