矩形覆盖

第九题:矩形覆盖

 

题目描述

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

 

解析:当 target < 1 时,大矩形的大小是 < 2*1,所以此时不需要2*1的小矩形,return 0;

          当 target = 1 时,大矩形的大小是 = 2*1,只有 1 种方法进行覆盖,return 1;

          当 target = 2 时,大矩形的大小是 = 2*2,有2种方式进行覆盖,横竖两种,return 2;

          当 target = n 时,进行分析:

      首先摆的形状如下图所示,那么摆放形状的方法有f(target-1)种

矩形覆盖_第1张图片

     然后摆放的形状如下图所示,摆放形状的方法有f(target-2)

矩形覆盖_第2张图片

 

具体实现方式如下所示:

public class RectCover {

/**
* 功能描述: 
*〈计算出矩形覆盖共有多少中方法〉 * * @param:target * @return: int * @since: 1.0.0 */ public int method(int target){ if (target < 1){ return 0; } if (target == 1){ return 1; } if (target == 2){ return 2; } return method(target-1)+method(target-2); } }

 

NowCoder(Online Coding, Please Click)

 

 

你可能感兴趣的:(剑指offer,剑指offer)