閱讀671 返回首頁    go 阿裏雲 go 技術社區[雲棲]


[劍指Offer]3.矩形覆蓋

題目描述:

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

輸入:

輸入可能包含多個測試樣例,對於每個測試案例,

輸入包括一個整數n(1<=n<=70),其中n為偶數。

輸出:

對應每個測試案例,

輸出用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有的方法數。

樣例輸入:
4
樣例輸出:
5

/*********************************
*   日期:2013-11-15
*   作者:SJF0115
*   題號: 題目1390:矩形覆蓋
*   來源:https://ac.jobdu.com/problem.php?pid=1390
*   結果:AC
*   來源:劍指Offer
*   總結:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
//F(n) = F(n-1) + F(n-2)
long long  Fibonacci(int n){
    int i;
    long long fibonacciA = 1;
    long long fibonacciB = 2;
    long long fibonacciC;
    if(n == 1){
        return fibonacciA;
    }
    else if(n == 2){
        return fibonacciB;
    }
    for(i = 3;i <= n;i++){
        fibonacciC = fibonacciA + fibonacciB;
        fibonacciA = fibonacciB;
        fibonacciB = fibonacciC;
    }
    return fibonacciC;
}

int main()
{
	int i,n;
	while(scanf("%d",&n) != EOF){
        printf("%lld\n",Fibonacci(n));
	}
    return 0;
}

代碼


/*---------------------------------------
*   日期:2015-07-19
*   作者:SJF0115
*   題目: 3.矩形覆蓋
*   網址:https://www.nowcoder.com/books/coding-interviews/72a5a919508a4251859fb2cfb987a0e6?rp=1
*   結果:AC
*   來源:劍指Offer
*   博客:
-----------------------------------------*/
#include <iostream>
using namespace std;

class Solution {
public:
    int rectCover(int n){
        if(n < 0){
            return 0;
        }//if
        else if(n == 1 || n == 0){
            return 1;
        }//else
        else if(n == 2){
            return 2;
        }//else
        return rectCover(n-1) + rectCover(n-2);
    }
};

int main(){
    Solution s;
    int number = 4;
    cout<<s.rectCover(number)<<endl;
    return 0;
}


最後更新:2017-04-03 14:54:03

  上一篇:go 程序員麵試筆試推薦書籍
  下一篇:go Linux下GPRS撥號功能的實現