问题 H: 铺地砖
时间限制: 1.000 Sec 内存限制: 128 M
题目描述
一天,晨晨的数学老师布置了一道题目,大意如下:用1×1和2×2的磁砖不重叠地铺满n×3的地板,共有多少种方案?
例如:n=1时:1×3的地板方法就一个,直接由三个1×1的磁砖铺满。
n=2时:2×3的地板可以由下面3种方案铺满:
输入
第一行:一个整数n(1≤n≤100)。
输出
输出铺满n×3的地板的方案数。
样例输入
3
样例输出
5
提示
对于20%的数据,1≤n≤15;
对于50%的数据,1≤n≤30;
对于100%的数据,1≤n≤100;
题解:
这个题!!!
找到规律还没有结束!居然当n为100时会超出long long int的表示范围...
所以还要用上“高精度”? 用数组来储存超大数的每一位,并进行运算。
那...我们先来找规律
我想了好一会儿,基本上这种题都需要用到“递推”的思想,那我们来想想看,一个n行3列的地板,不就是在n-1行3列的地板上再加了1行嘛。
我们不妨设想额外加的这一行是由1*1的地砖铺满的,用M[n]表示n行3列地板有多少种铺法。
那么 M[n]=M[n-1]+“未知数x”
没有算出来“x” 是第n行和第n-1行中有2*2地砖的铺法。
我们把2*2地砖看作由4个1*1地砖组合而来
第n行和第n-1行如果要想有2*2的地砖,也即代表着第n-1行和第n行要有4个紧邻的1*1的地砖。