免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: LunarBull
打印 上一主题 下一主题

昨天面试一道智力题。 [复制链接]

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
21 [报告]
发表于 2010-03-06 17:53 |只看该作者
这类问题都可以通过设计组合来解决,通过组合本身传递出你想要的消息。特别是在测试时,可以通过这种组合输入快速判定bug位置

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
22 [报告]
发表于 2010-03-06 18:49 |只看该作者
本帖最后由 cjaizss 于 2010-03-08 18:33 编辑

用信息论下界的手段不难分析出来,刚才写了好几百文字来描述其思路过程,可惜网络一刷就什么都没了,郁闷,不写了,只写答案。

  1. //1,2,3,4,5,6,7,8,9,10,11,12
  2. if(1,2,3,4 == 5,6,7,8) {
  3.         if(9 == 10) {
  4.                 if(9 == 11)
  5.                         return 12;
  6.                 else
  7.                         return 11;
  8.         } else {
  9.                 if(9 == 11)
  10.                         return 10;
  11.                 else
  12.                         return 9;
  13.         }
  14. } else if(1,2,3,4 < 5,6,7,8){
  15.         if(1,5,6 < 2,7,8) {
  16.                 if(1,7 < 10,11)
  17.                         return 1;
  18.                 else if(1,7 == 10,11)
  19.                         return 8;
  20.                 else if(1,7 > 10,11)
  21.                         return 7;
  22.         } else if(1,5,6 > 2,7,8) {
  23.                 if(2,5 < 10,11)
  24.                         return 2;
  25.                 else if(2,5 == 10,11)
  26.                         return 6;
  27.                 else if(2,5 > 10,11)
  28.                         return 5;
  29.         } else if(1,5,6 == 2,7,8) {
  30.                 if(3 == 10)
  31.                         return 4;
  32.                 else
  33.                         return 3;
  34.         }
  35. } else if(1,2,3,4 > 5,6,7,8){
  36.         if(1,5,6 < 2,7,8) {
  37.                 if(2,5 < 10,11)
  38.                         return 5;
  39.                 else if(2,5 == 10,11)
  40.                         return 6;
  41.                 else if(2,5 > 10,11)
  42.                         return 2;
  43.         } else if(1,5,6 > 2,7,8) {
  44.                 if(1,7 < 10,11)
  45.                         return 7;
  46.                 else if(1,7 == 10,11)
  47.                         return 8;
  48.                 else if(1,7 > 10,11)
  49.                         return 1;
  50.         } else if(1,5,6 == 2,7,8) {
  51.                 if(3 == 10)
  52.                         return 4;
  53.                 else
  54.                         return 3;
  55.         }
  56. }
复制代码
以下要好一点,因为不仅仅可以判断是哪个球,还可以判断轻重。

  1. //1,2,3,4,5,6,7,8,9,10,11,12
  2. if(1,2,3,4 == 5,6,7,8) {
  3.         if(9,10,11 == 1,2,3) {
  4.                 if(1 > 12)
  5.                         return 12轻;
  6.                 else
  7.                         return 12重;
  8.         } else if(9,10,11 > 1,2,3) {
  9.                 if(9 == 10)
  10.                         return 11重;
  11.                 else if(9 < 10)
  12.                         return 10重;
  13.                 else if(9 > 10)
  14.                         return 9重;
  15.         } else if(9,10,11 < 1,2,3) {
  16.                 if(9 == 10)
  17.                         return 11轻;
  18.                 else if(9 < 10)
  19.                         return 9轻;
  20.                 else if(9 > 10)
  21.                         return 19轻;
  22.         }
  23. } else if(1,2,3,4 < 5,6,7,8){
  24.         if(1,5,6 < 2,7,8) {
  25.                 if(1,7 < 10,11)
  26.                         return 1轻;
  27.                 else if(1,7 == 10,11)
  28.                         return 8重;
  29.                 else if(1,7 > 10,11)
  30.                         return 7重;
  31.         } else if(1,5,6 > 2,7,8) {
  32.                 if(2,5 < 10,11)
  33.                         return 2轻;
  34.                 else if(2,5 == 10,11)
  35.                         return 6重;
  36.                 else if(2,5 > 10,11)
  37.                         return 5重;
  38.         } else if(1,5,6 == 2,7,8) {
  39.                 if(3 == 10)
  40.                         return 4轻;
  41.                 else
  42.                         return 3轻;
  43.         }
  44. } else if(1,2,3,4 > 5,6,7,8){
  45.         if(1,5,6 < 2,7,8) {
  46.                 if(2,5 < 10,11)
  47.                         return 5轻;
  48.                 else if(2,5 == 10,11)
  49.                         return 6轻;
  50.                 else if(2,5 > 10,11)
  51.                         return 2重;
  52.         } else if(1,5,6 > 2,7,8) {
  53.                 if(1,7 < 10,11)
  54.                         return 7轻;
  55.                 else if(1,7 == 10,11)
  56.                         return 8轻;
  57.                 else if(1,7 > 10,11)
  58.                         return 1重;
  59.         } else if(1,5,6 == 2,7,8) {
  60.                 if(3 == 10)
  61.                         return 4重;
  62.                 else
  63.                         return 3重;
  64.         }
  65. }
复制代码

论坛徽章:
0
23 [报告]
发表于 2010-03-06 19:43 |只看该作者
楼上的if-else…………

论坛徽章:
5
金牛座
日期:2013-12-04 11:26:08处女座
日期:2013-12-04 12:32:17金牛座
日期:2014-03-19 09:49:11双鱼座
日期:2014-03-20 08:28:152015亚冠之柏斯波利斯
日期:2015-05-30 09:01:13
24 [报告]
发表于 2010-03-09 14:29 |只看该作者
话说当年 做这个题目的时候是高中的数学老师给的
俺们当年压根就不知道啥电脑 和啥算法,俺当初用了足足1个月想了出了答案,灵感来自 俺读了 一本关于美学的书,于是乎 一种平衡的美在大脑中闪现,于是乎 俺就感觉这个答案的步骤中需要一种平衡,于是乎就有了答案,当初那个高兴啊 仿佛那个小球在天枰上带有平衡性的跳跃着

论坛徽章:
0
25 [报告]
发表于 2010-03-09 14:56 |只看该作者
A喝1, 3, 5, 7
B喝2, 3, 6, 7
C喝4, 5, 6, 7

1有毒,A
2有毒,B
3有毒,AB
4有毒,C
5有毒, ...
koolcoy 发表于 2010-03-06 12:32



    相当牛拜

论坛徽章:
0
26 [报告]
发表于 2010-03-09 15:52 |只看该作者
这是个信息论的问题,“天平左右”,“天平上下”提供了两条信息,所以要三分

论坛徽章:
0
27 [报告]
发表于 2010-03-09 16:40 |只看该作者
我两步就能找出来!
1、将球左一个右一个地放上天平,如果天平没平衡,那么新放上的两个球中必有一个是重量不同的。
2、取下天平中的所有球,将两个中的其中一个跟别的一个球放上天平,如果不平衡,那么就是那个球不同,否则就是两个中的另一个不同!

论坛徽章:
0
28 [报告]
发表于 2010-03-09 16:47 |只看该作者
回复 1# LunarBull


    信息论的时候证明过,是有解的

    楼上的哥们百度出来了。。。。

论坛徽章:
5
金牛座
日期:2013-12-04 11:26:08处女座
日期:2013-12-04 12:32:17金牛座
日期:2014-03-19 09:49:11双鱼座
日期:2014-03-20 08:28:152015亚冠之柏斯波利斯
日期:2015-05-30 09:01:13
29 [报告]
发表于 2010-03-09 17:17 |只看该作者
我两步就能找出来!
1、将球左一个右一个地放上天平,如果天平没平衡,那么新放上的两个球中必有一个是重量 ...
haohao_h 发表于 2010-03-09 16:40



    这个也算3次?

论坛徽章:
0
30 [报告]
发表于 2010-03-09 18:07 |只看该作者
怎么这么复杂?

12个球。

1,分成两堆, A:6  B:6   ,如果A重,轻的是B,反之相同。

2,轻的6个再分成,A:3  B:3,如果A重,轻的是B,反之相同。

3,还有三个球,随便拿两个测下,如果一样重,则另一个轻,如果一个轻则就是它了。(前提:说的就是12个中有一个是轻的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP