有一条长度为N*1米的路,需要铺设地板,地板的规格为1*1米,1*2米,1*3米,各种地板的数量不限。各种规格的地板可以随意组合,试问:一共有多少种铺法?
Python代码如下:
def get_N(N):
list_1 = [0] * N
list_2 = [0] * N
list_3 = [0] * N
list_1[0] = 1
list_2[0] = 0
list_3[0] = 0
list_1[1] = 0
list_2[1] = 1
list_3[1] = 0
list_1[2] = 1
list_2[2] = 1
list_3[2] = 1
if N == 1:
return 1
elif N == 2:
return 1
elif N == 3:
return 3
else:
for i in range(3, N):
list_1[i] = list_2[i-1] + list_3[i-1]
list_2[i] = list_1[i-2] + list_3[i-2]
list_3[i] = list_1[i-3] + list_2[i-3]
return list_1[N-1] + list_2[N-1] + list_3[N-1]
print get_N(10)