思路:
用归纳法
n=1时,return 1
n=2时,return 2
n=2以上时,分两步考虑
第一次摆放一块21,占了一格,所以有f(n-1)种摆法
第一次摆放一块12,占了两格,因为上方摆放了一个12,下方就确定只能放12了,所以有f(n-2)种摆法
可得f(n)=f(n-1)+f(n-2),是一个斐波那契数列
实现:
和斐波那契数列一模一样,只需要改一下起始数值,本题n=1时f(n)=1
public class Solution {
public int RectCover(int target) {
if(target<=2)return target;
int n1=1;
int n2=2;
int total=0;
for(int i=2;i<target;i++){
total=n1+n2;
n1=n2;
n2=total;
}
return total;
}
}