使用Python和二進位制字串製作燈泡開關程式


假設在一個房間裡,有n個燈泡,這些燈泡編號從0到n-1。我們必須將它們從左到右排成一行。最初,所有燈泡都是關閉的(0狀態)。我們必須獲得由給定目標陣列't'表示的配置,其中t[i]為'1'表示第i個燈泡開啟,'0'表示關閉。我們還有一個開關來翻轉燈泡的狀態。翻轉操作定義如下:

  • 選擇任何燈泡索引i。

  • 翻轉從索引i到索引n-1的每個燈泡。

我們必須找到形成目標所需的最小翻轉次數。

因此,如果輸入類似於t = "0101",則輸出將為3,如果我們從第二個燈泡開始,則下一個配置將為"0111",然後從第三個開始,它將為"0100",然後翻轉最後一個燈泡使其成為"0101"

為了解決這個問題,我們將遵循以下步驟:

  • count := 0

  • x := '0'

  • 對於t中的每個i,執行

    • 如果i與x不同,則

      • count := count + 1

      • x := i

  • 返回count

讓我們看看下面的實現,以便更好地理解:

示例

線上演示

def solve(t):
   count = 0
   x = '0'
   for i in t:
      if i != x:
         count += 1
         x = i
   return count
t = "0101"
print(solve(t))

輸入

"0101"

輸出

3

更新於:2021年5月29日

931 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告