問題
我々は、2使用できる横の小さな四角形1または垂直より大きな長方形を覆います。
N 2を使用する大きな矩形2 * nは、オーバーラップせずに小さな四角形1カバレージ
方法の合計数?
分析
这种问题上来找不到规律,是啥啊?
最初のいくつかの絵を描くことができ、法律探し?
就相当于解数学题,肯定是有什么规律的?
n=1
ケース1n=2
ケース2
- ・
n=3
n=4
上記の規則を要約すると、n個の振り子方法及びD 2つのフロントの見出すことができるn-1
とn-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;
}