我做的GOOGLE面试题的题目及答案,大家看看吧,应该是正确的
题目:“有一个100层高的大厦,你手中有两个相同的玻璃围棋子。从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层面。”
答案:
//前提条件:我不知道临界到底是哪一层,所以需要根据期望值,制定一个最佳测试计划
//主要思想:第一颗棋子以一定跨度跨越式测试,第二科棋子再在前一颗棋子测试出的临界范围内由低到高逐层测试
//关键要素:计算出在期望值中,哪种跨度最有效
public class lesson1
{
public static void main(String[] args)
{
double expect=0.0; //在一定跨度时得出结果须进行试验次数的期望值
for(int step=1;step<=100;step++)
{
for(int margin=1;margin<=100;margin++)
{
if(margin==1)
expect=0.0;
expect=expect+(double)count(margin,step)/100;
}
System.out.println("when the step is "+step+" you are expected to try "+expect+" times");
}
}
//在一定跨度和临界条件下,许进行试验的次数
static int count(int margins,int steps)
{
int t=0; //得出的结果
if(steps==1) //当跨度为1,即从1楼开始挨着去试验时
{
if(margins==100)
t=99;
else
t=margins;
}
if(steps!=1) //当跨度不为1,即按一定规律间隔数个楼层去试验时
{
if(margins%steps==0)
t=(margins/steps+steps-1);
if(margins%steps!=0)
{
if(margins<steps)
t=(1+margins);
else
t=((int)(margins/steps)+1+margins%steps);
}
}
return t;
}
}
问题点数:0、回复次数:8Top
1 楼kaleid()回复于 2006-12-14 15:26:46 得分 0
运算的结果为:
当你的跨度为 1 时,你需要进行试验的期望值次数为 50.49 次
当你的跨度为 2 时,你需要进行试验的期望值次数为 26.500000000000007 次
当你的跨度为 3 时,你需要进行试验的期望值次数为 18.830000000000002 次
当你的跨度为 4 时,你需要进行试验的期望值次数为 15.250000000000007 次
当你的跨度为 5 时,你需要进行试验的期望值次数为 13.300000000000004 次
当你的跨度为 6 时,你需要进行试验的期望值次数为 12.139999999999997 次
当你的跨度为 7 时,你需要进行试验的期望值次数为 11.459999999999997 次
当你的跨度为 8 时,你需要进行试验的期望值次数为 11.060000000000002 次
当你的跨度为 9 时,你需要进行试验的期望值次数为 10.910000000000002 次
当你的跨度为 10 时,你需要进行试验的期望值次数为 10.9 次
当你的跨度为 11 时,你需要进行试验的期望值次数为 10.91 次
当你的跨度为 12 时,你需要进行试验的期望值次数为 10.939999999999998 次
当你的跨度为 13 时,你需要进行试验的期望值次数为 11.11 次
当你的跨度为 14 时,你需要进行试验的期望值次数为 11.389999999999997 次
当你的跨度为 15 时,你需要进行试验的期望值次数为 11.539999999999996 次
当你的跨度为 16 时,你需要进行试验的期望值次数为 11.839999999999996 次
当你的跨度为 17 时,你需要进行试验的期望值次数为 12.250000000000002 次
当你的跨度为 18 时,你需要进行试验的期望值次数为 12.350000000000003 次
当你的跨度为 19 时,你需要进行试验的期望值次数为 12.75 次
当你的跨度为 20 时,你需要进行试验的期望值次数为 13.450000000000003 次
当你的跨度为 21 时,你需要进行试验的期望值次数为 13.460000000000003 次
当你的跨度为 22 时,你需要进行试验的期望值次数为 13.660000000000004 次
当你的跨度为 23 时,你需要进行试验的期望值次数为 14.060000000000002 次
当你的跨度为 24 时,你需要进行试验的期望值次数为 14.660000000000002 次
当你的跨度为 25 时,你需要进行试验的期望值次数为 15.46 次
当你的跨度为 26 时,你需要进行试验的期望值次数为 15.469999999999999 次
当你的跨度为 27 时,你需要进行试验的期望值次数为 15.59 次
当你的跨度为 28 时,你需要进行试验的期望值次数为 15.829999999999998 次
当你的跨度为 29 时,你需要进行试验的期望值次数为 16.190000000000005 次
当你的跨度为 30 时,你需要进行试验的期望值次数为 16.670000000000005 次
当你的跨度为 31 时,你需要进行试验的期望值次数为 17.269999999999992 次
当你的跨度为 32 时,你需要进行试验的期望值次数为 17.989999999999995 次
当你的跨度为 33 时,你需要进行试验的期望值次数为 18.830000000000002 次
当你的跨度为 34 时,你需要进行试验的期望值次数为 19.14 次
当你的跨度为 35 时,你需要进行试验的期望值次数为 19.179999999999996 次
当你的跨度为 36 时,你需要进行试验的期望值次数为 19.279999999999998 次
当你的跨度为 37 时,你需要进行试验的期望值次数为 19.44 次
当你的跨度为 38 时,你需要进行试验的期望值次数为 19.659999999999997 次
当你的跨度为 39 时,你需要进行试验的期望值次数为 19.939999999999994 次
当你的跨度为 40 时,你需要进行试验的期望值次数为 20.279999999999998 次
当你的跨度为 41 时,你需要进行试验的期望值次数为 20.68 次
当你的跨度为 42 时,你需要进行试验的期望值次数为 21.14 次
当你的跨度为 43 时,你需要进行试验的期望值次数为 21.66 次
当你的跨度为 44 时,你需要进行试验的期望值次数为 22.24 次
当你的跨度为 45 时,你需要进行试验的期望值次数为 22.879999999999995 次
当你的跨度为 46 时,你需要进行试验的期望值次数为 23.579999999999995 次
当你的跨度为 47 时,你需要进行试验的期望值次数为 24.339999999999996 次
当你的跨度为 48 时,你需要进行试验的期望值次数为 25.159999999999997 次
当你的跨度为 49 时,你需要进行试验的期望值次数为 26.04 次
当你的跨度为 50 时,你需要进行试验的期望值次数为 26.980000000000004 次
当你的跨度为 51 时,你需要进行试验的期望值次数为 26.99 次
当你的跨度为 52 时,你需要进行试验的期望值次数为 27.009999999999998 次
当你的跨度为 53 时,你需要进行试验的期望值次数为 27.049999999999997 次
当你的跨度为 54 时,你需要进行试验的期望值次数为 27.11 次
当你的跨度为 55 时,你需要进行试验的期望值次数为 27.19 次
当你的跨度为 56 时,你需要进行试验的期望值次数为 27.290000000000003 次
当你的跨度为 57 时,你需要进行试验的期望值次数为 27.41 次
当你的跨度为 58 时,你需要进行试验的期望值次数为 27.549999999999997 次
当你的跨度为 59 时,你需要进行试验的期望值次数为 27.709999999999997 次
当你的跨度为 60 时,你需要进行试验的期望值次数为 27.89 次
当你的跨度为 61 时,你需要进行试验的期望值次数为 28.089999999999996 次
当你的跨度为 62 时,你需要进行试验的期望值次数为 28.31 次
当你的跨度为 63 时,你需要进行试验的期望值次数为 28.549999999999997 次
当你的跨度为 64 时,你需要进行试验的期望值次数为 28.81 次
当你的跨度为 65 时,你需要进行试验的期望值次数为 29.089999999999996 次
当你的跨度为 66 时,你需要进行试验的期望值次数为 29.389999999999997 次
当你的跨度为 67 时,你需要进行试验的期望值次数为 29.71 次
当你的跨度为 68 时,你需要进行试验的期望值次数为 30.049999999999997 次
当你的跨度为 69 时,你需要进行试验的期望值次数为 30.41 次
当你的跨度为 70 时,你需要进行试验的期望值次数为 30.79 次
当你的跨度为 71 时,你需要进行试验的期望值次数为 31.19 次
当你的跨度为 72 时,你需要进行试验的期望值次数为 31.61 次
当你的跨度为 73 时,你需要进行试验的期望值次数为 32.050000000000004 次
当你的跨度为 74 时,你需要进行试验的期望值次数为 32.51 次
当你的跨度为 75 时,你需要进行试验的期望值次数为 32.99 次
当你的跨度为 76 时,你需要进行试验的期望值次数为 33.49 次
当你的跨度为 77 时,你需要进行试验的期望值次数为 34.01 次
当你的跨度为 78 时,你需要进行试验的期望值次数为 34.55 次
当你的跨度为 79 时,你需要进行试验的期望值次数为 35.11 次
当你的跨度为 80 时,你需要进行试验的期望值次数为 35.69 次
当你的跨度为 81 时,你需要进行试验的期望值次数为 36.290000000000006 次
当你的跨度为 82 时,你需要进行试验的期望值次数为 36.910000000000004 次
当你的跨度为 83 时,你需要进行试验的期望值次数为 37.55 次
当你的跨度为 84 时,你需要进行试验的期望值次数为 38.21000000000001 次
当你的跨度为 85 时,你需要进行试验的期望值次数为 38.89000000000001 次
当你的跨度为 86 时,你需要进行试验的期望值次数为 39.59 次
当你的跨度为 87 时,你需要进行试验的期望值次数为 40.31 次
当你的跨度为 88 时,你需要进行试验的期望值次数为 41.05000000000001 次
当你的跨度为 89 时,你需要进行试验的期望值次数为 41.81000000000001 次
当你的跨度为 90 时,你需要进行试验的期望值次数为 42.59 次
当你的跨度为 91 时,你需要进行试验的期望值次数为 43.39 次
当你的跨度为 92 时,你需要进行试验的期望值次数为 44.21000000000001 次
当你的跨度为 93 时,你需要进行试验的期望值次数为 45.050000000000004 次
当你的跨度为 94 时,你需要进行试验的期望值次数为 45.91 次
当你的跨度为 95 时,你需要进行试验的期望值次数为 46.790000000000006 次
当你的跨度为 96 时,你需要进行试验的期望值次数为 47.690000000000005 次
当你的跨度为 97 时,你需要进行试验的期望值次数为 48.61 次
当你的跨度为 98 时,你需要进行试验的期望值次数为 49.55 次
当你的跨度为 99 时,你需要进行试验的期望值次数为 50.510000000000005 次
当你的跨度为 100 时,你需要进行试验的期望值次数为 51.49 次
由此可见,第一颗棋子每10层楼摔1次,第二颗根据第一颗的基础每层楼摔1次效率最好Top
2 楼kaleid()回复于 2006-12-14 15:28:29 得分 0
本人刚学JAVA,所以很多语法不是很好,但是结果和思路还是可以在程序中表示出来的,希望大家交流
email:soonchild@hotmail.comTop
3 楼ww_goddess(差一点)回复于 2006-12-14 15:54:50 得分 0
50层碎了?25层开始摔:75层开始摔;
25层碎了?13层开始摔:28层开始摔;
依此类推,不知道可以吗Top
4 楼itoaer(Maxthon2做的太烂)回复于 2006-12-26 09:51:42 得分 0
这道题目不是这样做的,你去csdn上搜一下,有很多这道题目的解答Top
5 楼hudingchen(努力不一定成功,放弃一定失败。)回复于 2006-12-26 14:08:09 得分 0
做的不对~~`Top
6 楼youzelin()回复于 2007-01-11 13:17:13 得分 0
这道题不能这样做,既然是面试题,不会这么复杂:
我的想法:
从第二层开始,每间隔一层摔一次,如果摔碎了,该 n 层的下一层 n - 1 层即为临界层。
由于题目中说有两颗玻璃子,所以可以每间隔三层摔一次,如果碎了,在 n - 2 层在摔一次,如果碎了,n - 1 层为临界层,如果没碎,n + 1 层为临界层。Top
7 楼limao1358(李茂)回复于 2007-04-04 13:49:36 得分 0
楼上的什么话,别忘了这是google的面试题.不仅要解决问题,而且要是最优解决方案!
楼主的思路还是相当的清晰的.Top
8 楼kelansi()回复于 2007-04-04 20:45:45 得分 0
楼主做的很好么
Top




