Google笔试的败笔
正文:
1 超级失败的1:说8点开始,考试时间100分钟 ,怎么算都是9:10交卷;9点一到匆匆交卷了,晚上躺床上才发现错也;
2 超级失败的2:把自个的生日又记错了;
3 怕怕的发现:发现mm还是超级可怕滴,眼睁睁看着一个骗局,哎,也得谨慎些以防上当受骗啊;
题目如下:
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)?{
}
可以用最熟悉的语言写
在考场的第一个做法
?1 public? class?T? {
?2 ? public? int?t( int?n) {
?3 ?? if?(n? ==? 0 )? {
?4??? return? 1;
?5 ??}? else? if?(n? ==? 1 )? {
?6??? return? 1;
?7 ??}? else? if?(n? ==? 2 )? {
?8??? return? 2;
?9 ??}? else? {
10??? return?t(n - 1 )? ?t(n - 2 )? ?t(n - 3 );
11??}?
12?}
13 }
当时发现时间够用,进行了公式推理,但未得出规律的真谛
每个都与T(3)可以直接发生关系,关系是2的幂次方,但最终没有得出公式
遂改进如下:
?1 public? class?T? {
?2 ? public? int?t( int?n) {
?3 ?? if?(n? ==? 0 )? {
?4??? return? 1;
?5 ??}? else? if?(n? ==? 1 )? {
?6??? return? 1;
?7 ??}? else? if?(n? ==? 2 )? {
?8??? return? 2;
?9 ??}? else? {
10??? return? 2? *?t(n - 1 )? -?t(n - 3 );
11??}?
12?}
13 }
晚上躺床上,怎么可能这样直接呢?
突然想到最起码的一点就是重复数的计算,应该进行保存;
如果正向逐个求然后保存,可行;
如果倒向如何保存,尚未想好
大家来仁者见仁一下哦(有更好的思路的请指点)
public class T {
?Map values = new HashMap();
?
?public int t(int n){
??int result = 0;
??if (n == 0) {
??? result = 1;
??} else if (n == 1) {
???result = 1;
??} else if (n == 2) {
???result = 2;
??} else {
???result =? 2 * t(n-1) - t(n-3);
??}
??return result;
?}
}
如果觉得《Google笔试的败笔》不错,可以推荐给好友哦。
文章关键字:求职笔试面试 - 笔试题目,银行笔试题目,企业笔试题目,求职笔试
与Google笔试的败笔 相关的文章
- ·上一篇:第一次笔试献给Google
- Google笔试的败笔
- › 安装/卸载Google Chrome扩展插件
- › 一些Google笔试题目
- › Google笔试记
- › Google笔试的败笔
- › 第一次笔试献给Google
- 在百度中搜索相关文章:Google笔试的败笔
- 在谷歌中搜索相关文章:Google笔试的败笔
- 在soso中搜索相关文章:Google笔试的败笔
- 在搜狗中搜索相关文章:Google笔试的败笔