题目
思路
动态规划
1,边界条件(初始状态)
f(0)=0,f(1)=1,f(2)=2
2,状态转移
f(n) = f(n-1) + f(n-2)
f(n-1):最后是一个横着的小矩形
f(n-2):最后是两个竖着的小矩形
代码
递归,代码简洁
public class Solution {
public int RectCover(int target) {
if(target==0 || target==1 || target==2)
return target;
return RectCover(target-1)+RectCover(target-2);
}
}
循环迭代, 时间更短
public class Solution {
public int RectCover(int target) {
if(target==0 || target==1 || target==2)
return target;
int n_2 = 1;
int n_1 = 2;
for(int i=0; i<target-2; i++){
int temp = n_1;
n_1 = n_2 + n_1;
n_2 = temp;
}
return n_1;
}
}