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
广告