| — |
google:job:array [2012/01/18 07:40] (当前版本) |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== 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的非递归解答 | ||
| + | |||
| + | <code 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); | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ==== 解答二 ==== | ||
| + | |||
| + | <code python> | ||
| + | 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) | ||
| + | </code> | ||