您的位置:首页 > Web前端

剑指offer第十题(矩形覆盖)

2017-08-30 11:38 267 查看
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

思路:我是通过在草稿上画图可知大矩形2*1有一种方法,2*2时有两种方法,2*3有三种方法,2*4有四种五种方法,依次类推可知为斐波拉契数列。

java代码:

public class Solution {

    public int RectCover(int target) {

        if(target<=0){

            return 0;

        }

        if(target==1){

            return 1;

        }

        int temp1=1;

        int temp2=1;

        int result=0;

        for(int i=2;i<=target;i++){

            result=temp1+temp2;

            temp1=temp2;

            temp2=result;

        }

        return result;

    }

}

python代码:

# -*- coding:utf-8 -*-

class Solution:

    def rectCover(self, number):

        if number<=0:

            return 0

        if number ==1:

            return 1

        temp1=1

        temp2=1

        for i in range(2,number+1):

            result=temp1+temp2

            temp1=temp2

            temp2=result

        return result
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: