问题描述:
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。
请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解析:当n = 1时,只有一种方法,竖着放。
当n = 2时,有两种,横着放,或者竖着放,
当n >= 3时,和斐波那契数列类似。先分为第一步是横着放还是竖着放,然后分别求出各自剩余的未覆盖矩形的覆盖方法。让最中结果相加。
int RectCover(int number){ int f1 = 1; int f2 = 2; int sum = 0; if (0 >= number) return 0; if ((1 == number) || (2 == number)) return number; while (3 <= number--) { sum = f1 + f2; f1 = f2; f2 = sum; } return sum;}
新闻热点
疑难解答