CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

我做的GOOGLE面试题的题目及答案,大家看看吧,应该是正确的

楼主kaleid()2006-12-14 15:25:33 在 Java / J2SE / 基础类 提问

题目:“有一个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

相关问题

关键词

得分解答快速导航

  • 帖主:kaleid

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo