劍指:矩形覆蓋

題目描述

我們可以用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?

思路:

第一塊有兩種方式:橫着放和豎着放
橫這放對應爲發f(n-2);
豎着放下一步的放方法爲f(n-1);
所以總的放的方法爲f(n)=f(n-1)+f(n-2);

實現:

 int rectCover(int number)
    {
        //迭代
        if(number<1) return 0;
        if(number==1) return 1;
        if(number==2) return 2;
        int x=1,y=2;
		for(int i=0;i<=number-3;i++)
        {
            y=x+y;
            x=y-x;
        }
        return y;
        
        /*直接遞歸
        if(number<1) return 0;
        if(number==1) return 1;
        if(number==2) return 2;
        return rectCover(number-1)+rectCover(number-2);
        */
    }


發佈了50 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章