首页 > 学院 > 开发设计 > 正文

矩形覆盖问题

2019-11-06 07:36:01
字体:
来源:转载
供稿:网友

问题描述:

我们可以用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;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表