剑指offer每日一题算法题(java解法)
方便日后复习,从今天开始。
算法之行始于足下
[编程题]矩形覆盖-- Java实现
------------------------------------------------------------------------------------------------------
题目描述
我们可以用2x1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2x1的小矩形无重叠地覆盖一个2xn的大矩形,总共有多少种方法?
循环
解题思路:
1.与斐波那契数列数列那一题的循环一模一样.可以回头参考
public class Solution {
public int RectCover(int target) {
int tmp1=1,tmp2=2,tmp3=0;
if(target>=0&&target<=2){
return target;
}
else{
for(int i=3;i<=target;i++){
tmp3=tmp1+tmp2;
tmp1=tmp2;
tmp2=tmp3;
}
}
return tmp2;
}
}
递归
解题思路:
1.跟第9题思路一样,是斐波那契数列,通过举例找规律
public class Solution {
public int RectCover(int target) {
if(target>=0&&target<=2){
return target;
}
else{
return RectCover(target-1)+RectCover(target-2);
}
}
}