您的位置:首页 > 编程语言

n个2*1小矩形无重叠覆盖2*n大矩形(递归,思路分析及代码实现,斐波那契数列衍生)

2017-07-21 22:29 561 查看
//我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

//思路:  对于n>=3的情况, 不管前面矩形是怎样覆盖的。我们只考虑最后一次怎么覆盖。

//最后一次只有两种覆盖方式:1.用1个小矩形竖着覆盖。   2.用两个小矩形横着覆盖。

//所以总的方法数无外乎   -->  你用各种方法覆盖到只剩1个再竖着覆盖或者你用各种方法覆盖到只剩两个再横着覆盖

//即:总的方法数F(n) = n-1次的方法数F(n-1)(接着用一个小矩形竖着覆盖) + n-2次的方法数F(n-2)(接着用两个小矩形横着覆盖)

int rectCover(int number) 

{
if ( number <= 0 )
return 0;

        
if ( 1 == number )
return 1;

        
if ( 2 == number )
return 2;

return rectCover( number-1 ) + rectCover( number-2 );

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐