剑指 10 矩阵覆盖
题目分析
典型的递归和动态规划的问题。
对于一个 2 ∗ n ( n > 3 ) 2*n (n>3) 2∗n(n>3)的大矩阵有 k n k_n kn种方法。有推导式:
k n = k n − 1 + k n − 2 k_n = k_{n-1}+k_{n-2} kn=kn−1+kn−2
其中 k 1 = 1 , k 2 = 2 k_1=1,k_2=2 k1=1,k2=2,那么其实能够推导出 k n k_n kn的计算式子,可以直接一步计算,但是算出来的式子比较麻烦
代码
我的代码
class Solution:
def rectCover(self, number):
res =[]
res.append(0)
res.append(1)
res.append(2)
for i in range(3,number+1):
res.append(res[i-1]+res[i-2])
return res[number]
别人的代码:
# -*- coding:utf-8 -*-
class Solution:
def rectCover(self, number):
# write code here
a = 0
b = 1
s = 0
for i in range(number):
s = a+b
a = b
b = s
return s
就直接加和,不需要使用空间保存