问题描述
有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 ,请计算一共有多少种铺设的方法。
(类似于斐波那契数列)
问题分析:(重要)
先将n=1,n=2分析出来,(先将初始的几个值分析出来)
之后从最后面分析递推公式。所有的骨牌只有两只形式放置(横或者竖),当骨牌竖着放置时,所有的方法有f(n-1)种,当骨牌横着放置时,所有的方法有f(n-2)种;所以递推公式为这两种方法的总合 f(n)=f(n-1)+f(n-2)。
代码:
/
#include<stdio.h> int a(int m) { if(m==1) { return 1; } if(m==2) { return 2; }else { return a(m-1)+a(m-2); } } int main() { int n,i,m; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); printf("%d\n",a(m)); } return 0; }