问题描述
有一长度为 N(1<=N<=10)的地板,给定三种不同瓷砖:一种长度为 1,一种长度为 2,另一种长度为 3,数目不限。要将这个长度为 N 的地板铺满, 并且要求长度为 1 的瓷砖 不能相邻,一共有多少种不同的铺法?
例如,长度为 4 的地板一共有如下 4 种铺法:
4=1+2+1
4=1+3
4=2+2
4=3+1
编程求解上述问题。
第一种
输入格式
只有一个数 N,代表地板的长度。
输出格式
方案总数。
样例输入
4
样例输出
4
动态规划
n表示长度
最后一块不是1 (则是2或3) 最后一块是1总共 f_not1(1)=0
f_1(1)=1
f(1) f_not1(2)=1
f_1(2)=0
f(2)
f_not1(3)=2
f_1(3)=1
f(3)
f_not1(4)=f(1)+f(2)
铺满1块地板的数量(再铺一块3)+
铺满2块地板的数量(再铺一块2)
f_1(4)=f_not1(3)
最后一块不是1的f_not1(3)
f(4)f_not1(5)=f(2)+f(3)
铺满2块地板的数量(再铺一块3)+
铺满3块地板的数量(再铺一块2)
f_1(5)=f_not1(4)
最后一块不是1的f_not1(4)
f(5)