0
点赞
收藏
分享

微信扫一扫

[蓝桥杯python] 瓷砖铺放:有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如

 [蓝桥杯python] 瓷砖铺放

问题描述

1、资源限制

2、输入格式

3、输出格式

4、样式输入及输出

5、代码及解析

大功告成!编写不易,大家成功后点个关注or赞谢谢~~


问题描述

  有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?
  例如,长度为4的地面一共有如下5种铺法:
  4=1+1+1+1
  4=2+1+1
  4=1+2+1
  4=1+1+2
  4=2+2
  编程用递归的方法求解上述问题。


1、资源限制

资源限制

时间限制:1.0s   内存限制:256.0MB

2、输入格式

只有一个数N,代表地板的长度

3、输出格式

输出一个数,代表所有不同的瓷砖铺放方法的总数

4、样式输入及输出

样例输入

4

样例输出

5

5、代码及解析

具体解析请大家自己看一下代码中的备注,在此不多做解释。

n = int(input())
dp = [[0,0] for _ in range(n)]
if n ==1:
    print(1)
elif n ==2:
    print(2)
else:
    dp[0][0], dp[0][1] = 1, 0
    dp[1][0], dp[1][1] = 1, 1
    for i in range(2,n):
        dp[i][0] = dp[i-1][0] + dp[i-1][1]
        dp[i][1] = dp[i-2][0] + dp[i-2][1]

    print(dp[-1][-1]+dp[-1][-2])

 自己写的所以有点复杂,但是至少能完成嘿嘿。如果各位有优化欢迎评论区讨论!!

大功告成!编写不易,大家成功后点个关注or赞谢谢~~


举报

相关推荐

0 条评论