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]
- 如果i + x <= width,則:
- 對於bricks中的每個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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP