题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:
第一块有两种方式:横着放和竖着放
横这放对应为发f(n-2);
竖着放下一步的放方法为f(n-1);
所以总的放的方法为f(n)=f(n-1)+f(n-2);
int rectCover(int number)
{
//迭代
if(number<1) return 0;
if(number==1) return 1;
if(number==2) return 2;
int x=1,y=2;
for(int i=0;i<=number-3;i++)
{
y=x+y;
x=y-x;
}
return y;
/*直接递归
if(number<1) return 0;
if(number==1) return 1;
if(number==2) return 2;
return rectCover(number-1)+rectCover(number-2);
*/
}