在Python中统计一组砖块能够构成多少个横向砖块图案的程序
假设我们有一个数字列表叫做bricks并且有另外两个变量width和height。 此处bricks[i]中的每个元素表示长度为bricks[i]单位且宽度为1单位的砖块。 我们必须找到将砖块铺设的方法,以便我们可以获得给定宽度和高度的全部砖块布局。我们可以重复使用这些砖块但只能在横向上铺设。
因此,如果输入是bricks=[2,1],width=3且height=2,则输出将为9,因为 –
为了解决这个问题,我们将采取以下步骤 –
- w:一个大小与width相同的列表,将1插入第一个位置,其余位置设为0
- 对于i在0到width之间的范围内,执行以下操作
- 如果w[i]不为零,那么
- 对于砖块中的每个x进行如下操作
- 如果i + x <= width,则
- w [i + x]:= w [i + x] + w [i]
- 如果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