用户工具

站点工具


google:job:array

Google数组算法面试题

题目

T( 0 ) = 1 ; T(1)=1;T(2)=2;T(n)=T(n-1)+T(n-2)+T(n-3);

用最优方式求T(n) ;

int T(int n) {

}

可以用最熟悉的语言写,不考虑溢出情况

解答

解答一

给出一个Python的非递归解答

#! /bin/python
 
def t(n, T=[0,1,2]):
  print T
  if len(T) > n: return T[n]
  else:
    for i in range(3,n+1):
      T.append(T[-1]+T[-2]+T[-3])
    return T[n]
 
if __name__ == "__main__":
  print t(50);
  print t(5);

解答二

def t(n):
   def t_iter(r, n):
       return r if n == 1 else t_iter([r[1], r[2], r[0] + r[1] + r[2]], n-1)
   return t_iter([0, 1, 2], n)
google/job/array.txt · 最后更改: 2012/01/18 07:40 (外部编辑)