長方形フットプリント(DP)アルゴリズム

問題

我々は、2使用できる横の小さな四角形1または垂直より大きな長方形を覆います。
N 2を使用する
大きな矩形2 * nは、オーバーラップせずに小さな四角形1カバレージ
方法の合計数?

分析

这种问题上来找不到规律,是啥啊?
最初のいくつかの絵を描くことができ、法律探し?
就相当于解数学题,肯定是有什么规律的?

  • n=1 ケース1
  • n=2 ケース2

ここに画像を挿入説明

  • n=3
    ここに画像を挿入説明
  • n=4
    ここに画像を挿入説明
    上記の規則を要約すると、n個の振り子方法及びD 2つのフロントの見出すことができるn-1n-2関連振り子方法、すなわちF(n)=F(n-1)+F(n-2)

これは、列ああ側室のわずかな数であります

コードの実装(再帰バージョン)

  public int RectCover(int target) {

        if(target<1)
            return 0;
        if(target==1){
            return 1;
        }
        if(target==2){
            return 2;
        }

        return RectCover(target-1)+RectCover(target-2);

    }

コードの実装(ループ版)

 public int RectCover2(int target){

        if(target<1){
            return 0;
        }

        if(target==1){
            return 1;
        }

        if(target==2){
            return 2;
        }

        int preNum = 2;
        int prepreNum = 1;
        int result = 0;
        for(int i=3;i<=target;i++){
            result = preNum+prepreNum;
            prepreNum=preNum;
            preNum=result;
        }
        return result;
    }
彼は198元の記事を発表 ウォン称賛20 ビュー20000 +

おすすめ

転載: blog.csdn.net/ZHOUJIAN_TANK/article/details/104904796