在Python中统计一组砖块能够构成多少个横向砖块图案的程序

在Python中统计一组砖块能够构成多少个横向砖块图案的程序

假设我们有一个数字列表叫做bricks并且有另外两个变量width和height。 此处bricks[i]中的每个元素表示长度为bricks[i]单位且宽度为1单位的砖块。 我们必须找到将砖块铺设的方法,以便我们可以获得给定宽度和高度的全部砖块布局。我们可以重复使用这些砖块但只能在横向上铺设。

因此,如果输入是bricks=[2,1],width=3且height=2,则输出将为9,因为 –

在Python中统计一组砖块能够构成多少个横向砖块图案的程序

为了解决这个问题,我们将采取以下步骤 –

  • w:一个大小与width相同的列表,将1插入第一个位置,其余位置设为0
  • 对于i在0到width之间的范围内,执行以下操作
    • 如果w[i]不为零,那么
      • 对于砖块中的每个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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程