首页 > 试题广场 >

长方体的摆放

[编程题]长方体的摆放
  • 热度指数:1256 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个长方体,长宽高分别为x,y,z,都为自然数。

现在要把若干个相同的长方体摆成高为N的一根柱形体。

每层摆1个,如果两种摆法的高度是一样的,则认为这两种摆法等价,所以每层只有三种摆法。

求一共有多少种摆法。


输入描述:
第一行为一个数字N,N>=1且N<=100,表示要摆放的高度
第二行为长方体的长宽高,x、y、z都为无符号整数,按升序排列。


输出描述:
摆法总数,已知该总数会小于10000000
示例1

输入

10
5 6 7

输出

1

备注:
如果没有任何一种摆法可以达成目的,输出0
python 动态规划
自底向上
n = int(input())
xyz = [int(x) for x in (input()).split(' ')]

ans = [0 for i in range(n+1)]
ans[0] = 1

for i in range(1, n+1):

    way = 0
    for cub in xyz:
        if i - cub >= 0:
            way += ans[i-cub]
    ans[i] = way

print(ans[-1])


发表于 2019-10-06 14:40:26 回复(0)