剑指offer第十题(矩形覆盖)
2017-08-30 11:38
267 查看
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
思路:我是通过在草稿上画图可知大矩形2*1有一种方法,2*2时有两种方法,2*3有三种方法,2*4有四种五种方法,依次类推可知为斐波拉契数列。
java代码:
public class Solution {
public int RectCover(int target) {
if(target<=0){
return 0;
}
if(target==1){
return 1;
}
int temp1=1;
int temp2=1;
int result=0;
for(int i=2;i<=target;i++){
result=temp1+temp2;
temp1=temp2;
temp2=result;
}
return result;
}
}
python代码:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
if number<=0:
return 0
if number ==1:
return 1
temp1=1
temp2=1
for i in range(2,number+1):
result=temp1+temp2
temp1=temp2
temp2=result
return result
思路:我是通过在草稿上画图可知大矩形2*1有一种方法,2*2时有两种方法,2*3有三种方法,2*4有四种五种方法,依次类推可知为斐波拉契数列。
java代码:
public class Solution {
public int RectCover(int target) {
if(target<=0){
return 0;
}
if(target==1){
return 1;
}
int temp1=1;
int temp2=1;
int result=0;
for(int i=2;i<=target;i++){
result=temp1+temp2;
temp1=temp2;
temp2=result;
}
return result;
}
}
python代码:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
if number<=0:
return 0
if number ==1:
return 1
temp1=1
temp2=1
for i in range(2,number+1):
result=temp1+temp2
temp1=temp2
temp2=result
return result
相关文章推荐
- 剑指offer第十题【矩形覆盖】c++实现
- 剑指offer 矩形覆盖
- 剑指offer--矩形覆盖
- 剑指offer-矩形覆盖
- [剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖
- 剑指offer--矩形覆盖
- [剑指offer]矩形覆盖
- 码农小汪-剑指Offer之3- 矩形覆盖
- 剑指offer_矩形覆盖
- 剑指offer之九---矩形覆盖
- 【剑指 offer】三,矩形覆盖(java实现)
- 剑指offer—矩形覆盖
- 【剑指offer】10矩形覆盖
- 剑指offer:矩形覆盖(python)
- 【剑指offer——JAVA实现】矩形覆盖
- 剑指OFFER之矩形覆盖(九度OJ1390)
- 剑指offer-矩形覆盖
- 剑指offer 矩形覆盖
- 剑指offer-chapter2-面试题9-矩形覆盖(java)
- 剑指offer 面试题9:斐波那契数列及其变形(跳台阶、矩形覆盖) 题解