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 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告