蓝桥杯 算法训练 瓷砖铺放Python实现(递归)
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有一长度为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 编程用递归的方法求解上述问题。 输入格式 只有一个数N,代表地板的长度 输出格式 输出一个数,代表所有不同的瓷砖铺放方法的总数 样例输入 4 样例输出 5 分析: 解决问题的关键是找到递归的公式,我们可以把2的数目看成递归的突破点,4里面最多的2的数目就是2个。 种类的通式如下:(假如是4) 值得注意的是,C(n,k)的计算方法: AC代码: while True : try : n = int ( input ( ) ) if n == 1 : print ( 1 ) break def mul ( a ) : #阶乘函数 ans = 1 for i in range ( 1 , a + 1 ) : ans *= i return ans def Rec ( n , k ) : if n == k : return 2 #一开始和最后都是1 else : return mul ( n ) // ( mul