Java逻辑题总结

Java逻辑题总结

  1.一个11L的杯子一个7L的杯子怎么量出2L的水?

  

[java] view plain copy
  1. 11L装满,往7L的倒,把7L倒满,剩4L,吧7L的倒空;  
  2. 4L倒进7L里,11L装满再往7L倒,倒满,剩8L;  
  3. 7L清空,8L倒进去,得到1L;  
  4. 1L和7L得到6L;  
  5. 6L和11L得到5L;  
  6. 5L和7L得到2L。  

反过来 在 7L里装满 往 11L里倒 , 道理是一样的!

2.飞机问题

  

每架飞机只有一个油箱,一箱油可以飞地球半圈。飞机间可以相互加油,所有飞机从同一个机场起飞。

要想使一架飞机安全飞地球一圈,回到起飞的机场。需要至少出动几架飞机。

解析:

6架足矣。

[java] view plain copy
  1. 3架飞机A、B、C同时起飞,同向而行。  
  2. 飞至1/8航程(绕地球一周)处,正好耗去1/4燃油,其中1架飞机A将2×1/4油箱燃油分加至的飞机B、C油箱中,然后带1/4燃油正好能安全返航。  
  3. 此时飞机B、C油箱是满的。  
  4. 剩下2架飞机继续飞行1/8航程,也就是1/4航程处,此时飞机B、C还有3/4油箱的燃油。飞机B将1/4油箱的燃油加至飞机C,飞机B剩下1/2油箱燃油返航,  
  5. 飞机C为满油箱,继续做环球飞行,能飞至3/4航程处。  
  6. 飞机C飞至1/2航程处,由同一机场同时起飞3架飞机D、E、F,与飞机A、B、C反方向飞行。  
  7. 飞机D、E、F逆向飞行1/8航程时,飞机D将2×1/4油箱燃油分加至飞机E、F中返航,飞机E、F为满油箱,再向前1/8航程,  
  8. 也就是逆向的1/4航程、正向的3/4航程处,正好与做环球飞行的飞机C汇合,飞机C燃油已耗尽,飞机E、F都还有3/4油箱燃油,  
  9. 两飞机分别将1/4油箱燃油加给飞机C,并同飞机C一起返回机场,此时飞机C、E、F同为1/2油箱燃油,正好能飞完剩下的1/4航程。  
  10. 如果飞机D、E、F不同时起飞,还可以节约一些燃油,但起飞飞机架次一样。  
3.几段不规则的绳子,每个绳子燃烧时间都是60S,怎么计算15S。

  解析:

[java] view plain copy
  1. 一根绳从两头同时点着 燃烧完时间是30秒  
  2. 过程如下:将一根绳子两端记为a b 另一根两端记为c d  
  3. 同时点着a b c,第一根烧完的时候时间过去了30秒,此时将第二根熄灭。  
  4. 这样剩下的半根绳子就是30秒  
  5. 要得到15秒只需将剩下这一半的两端点着,烧完的时间就是15秒。  

4.一群人参加聚会,每人头上戴一顶帽子,只能看见别人的帽子,看不见自己的帽子,帽子只有黑、白两种颜色。

黑帽子不少于1顶,主持人说。我们玩个游戏,一会儿我关灯,认为自己头上戴的是黑帽子的,扇自己一巴掌。

    第一次关灯,没有声音。第二次,还是没声音。第三次关灯,才有噼里啪啦的声音。问有多少人参加聚会。

解析:

[java] view plain copy
  1. 第一次关灯没人拍手说明不是黑帽子不止一个.如果只有一个,那戴黑帽子就会拍手,因为他看到的都是戴白帽子的。  
  2.    
  3. 如果是两个那么第二次关灯的时候。戴黑帽子A只会看到戴黑帽子B一个戴黑色的帽子,这带黑帽子A确定自己也是戴黑帽子。  
  4. 但是他们看到的不只只有一个戴黑帽子的.  
  5.    
  6. 第三次关灯有人拍手说明只有三个人戴黑帽子。因为戴黑帽子的只看到两个人戴黑帽子,而如果只有两个人戴黑帽子,那么第二次关灯就应该拍手了。  
  7. 所以只有三个人戴黑帽子。  

同类题比较:

 

一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!

一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的)

教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。请问您能猜出另外两个人的数吗?

解析:
[java] view plain copy
  1. 前两个 一个是48  一个是96  第三个是144  
  2.    
  3. 1 每个人虽然猜不出自己的数字 但是心里会有两个答案 自己的数字是这两个答案中的一个(心里的两个数字是另外两人的数字之和与数字之差)   
  4.    
  5. 2 如果在教授第一轮询问三个人 三个人都猜不到的情况下 由此说明 三个数字各不相同 因为假如有两个是相同的话   
  6. 就会有人能猜出自己的数字(三个数字都是正整数,不会是0,所以如果有两个相同的数,  
  7. 除了两个相同的数字以外的第三个人肯定知道自己的数字不是另外两数之差,是两数之和)  
  8.    
  9. 3 第二轮询问中 第三个说猜出了自己的数字是144  由此说明他排除了心中两个答案之一 确定了剩下的一个是正确数字    
  10. 那么  排除自己心中两个答案中错误的一个 肯定是因为他知道了自己的数字只能是另外两个数之和 并不是另外两数之差    
  11. 否定了两数之差的可能性是根据 “2”  
  12. 那么前两数之差肯定是和前两数中的一个相等  那么由此可知  前两数和为144  并且一个是另一个的二倍    
  13.    
  14. 4  列出方程x+y=144  x=2y  得知 x=96  y=48 。  


待续中……


你可能感兴趣的:(算法,面试题)