Python程式:計算用給定磚塊數量可以搭建多少種水平磚塊圖案


假設我們有一個名為bricks的數字列表和另外兩個值width和height。bricks[i]中的每個元素代表一塊長度為bricks[i]單位,寬度為1單位的磚塊。我們必須找到鋪設磚塊的方法數量,以便在給定的寬度和高度下獲得完整的磚塊佈局。我們可以重複使用磚塊,但只能水平鋪設。

因此,如果輸入類似於bricks = [2, 1] width = 3 height = 2,則輸出將為9,因為:

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

  • w := 一個大小與寬度相同的列表,在第一個位置插入1,其餘為0
  • 對於範圍0到width的i,執行:
    • 如果w[i]非零,則:
      • 對於bricks中的每個x,執行:
        • 如果i + x <= width,則:
          • w[i + x] := w[i + x] + w[i]
  • 返回w[width]^height

示例

讓我們看下面的實現來更好地理解:

def solve(bricks, width, height):
   w = [1] + [0] * width
   for i in range(width):
      if w[i]:
         for x in bricks:
            if i + x <= width:
               w[i + x] += w[i]
   return w[width] ** height

bricks = [2, 1]
width = 3
height = 2
print(solve(bricks, width, height))

輸入

[2, 1], 3, 2

輸出

9

更新於:2021年10月16日

221 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.