平凡生活-电脑科技和网络生活的个人博客

我的理想,就是过一种简单平凡得生活,没有过多欲望,只有不经意间得温馨。

« 美国人和中国人“谁会过”一些为人民服务的人,希望大家都来看看…… »

12个球称三次找出异常一球解法

一道经典的智力题(12球称三次找出异常一球)

有十二个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。

  评分标准:
  1、30分钟以内做出来:智力很高很高很高,不知道有多高。
  2、60分钟以内做出来:智力很高。
  3、两小时内做出来: 智力相当高。
  4、1天或者1周内做出来:智力也很高,而且还是一个有毅力的人。
  5、10分钟内做出来:你或者以前做过,或者多半是个马虎的人。

这里的问题关键是异常,所以不知道是轻了,还是重了,并且解题最后还要知道这球是轻还是重了。

这个问题是我偶而在论坛里看到的,我向来是觉得自己的智商还成,但一小时过去,我没有能解出来,就放弃了,当然我,仍然没有放过 google ,大致知道了解法。

终于,看到了我们站点的第一智商的 qiushuiwuhen 在 2002 年中,用JS写的解法,非常的棒,有兴趣的人可以先自己解一下这个题(哈哈,计一下时,另不准上网搜索),回头再看看他的JS,学习一下他的方法。

答案如下:先把球编号1-12,  
第一次,先将1-4号放在左边,5-8号放在右边。  
  1.如果天平平衡,则坏球在9-12号。 
    第二次将1-3号放在左边,9-11号放在右边。 
      1.如果右重则坏球在9-11号且坏球较重。 
        第三次将9号放在左边,10号放在右边。 
          1.如果右重则10号是坏球且比标准球重; 
          2.如果平衡则11号是坏球且比标准球重; 
          3.如果左重则9号是坏球且比标准球重。 
      2.如果平衡则坏球为12号。 
        第三次将1号放在左边,12号放在右边。 
          1.如果右重则12号是坏球且比标准球重; 
          2.这次不可能平衡; 
          3.如果左重则12号是坏球且比标准球轻。 
      3.如果左重则坏球在9-11号且坏球较轻。 
        第三次将9号放在左边,10号放在右边。 
          1.如果右重则9号是坏球且比标准球轻; 
          2.如果平衡则11号是坏球且比标准球轻; 
          3.如果左重则10号是坏球且比标准球轻。 
  2.如果左重则坏球在1-8号。 
    第二次将2-4号拿掉,将6-8号从右边移到左边,把9-11号放 
    在右边。就是说,把1,6,7,8放在左边,5,9,10,11放在右边。 
      1.如果右重则坏球在拿到左边的6-8号,且比标准球轻。 
        第三次将6号放在左边,7号放在右边。 
          1.如果右重则6号是坏球且比标准球轻; 
          2.如果平衡则8号是坏球且比标准球轻; 
          3.如果左重则7号是坏球且比标准球轻。 
      2.如果平衡则坏球在被拿掉的2-4号,且比标准球重。 
        第三次将2号放在左边,3号放在右边。 
          1.如果右重则3号是坏球且比标准球重; 
          2.如果平衡则4号是坏球且比标准球重; 
          3.如果左重则2号是坏球且比标准球重。 
      3.如果左重则坏球在没有被触动的1,5号。如果是1号, 
       则它比标准球重;如果是5号,则它比标准球轻。 
        第三次将1号放在左边,2号放在右边。 
          1.这次不可能右重。 
          2.如果平衡则5号是坏球且比标准球轻; 
          3.如果左重则1号是坏球且比标准球重 
3.如果右重,则情况和2相反,同样思路即解 
2、有十三个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。 
注意: 是重量是异常 没有明确轻重 
答案如下:先把球编号1-13,  
第一次,先将1-4号放在左边,5-8号放在右边。  
  1.如果天平平衡,则坏球在9-13号。 
    第二次将1-3号放在左边,9-11号放在右边。 
      1.如果右重则坏球在9-11号且坏球较重。 
        第三次将9号放在左边,10号放在右边。 
          1.如果右重则10号是坏球且比标准球重; 
          2.如果平衡则11号是坏球且比标准球重; 
          3.如果左重则9号是坏球且比标准球重。 
      2.如果平衡则坏球为12、13号。 
        第三次将1号放在左边,12号放在右边。 
          1.如果右重则12号是坏球且比标准球重; 
          2.如果平衡则13号是坏球,至此三次机会用完,但未称出13号轻重; 
          3.如果左重则12号是坏球且比标准球轻。 
      3.如果左重则坏球在9-11号且坏球较轻。 
        第三次将9号放在左边,10号放在右边。 
          1.如果右重则9号是坏球且比标准球轻; 
          2.如果平衡则11号是坏球且比标准球轻; 
          3.如果左重则10号是坏球且比标准球轻。 
  2.如果不平衡,答案参考12个球的2、3步,因为这时的问题将转化为相同的问题,即2次从8个球中找出异常球。 
                                 清华小牛

javascript 解法

在12个小球中有一个和其他不同(或轻或重),现在先拿起笔,记下哪个球重或者轻,然后继续下面的游戏<br><br><br>
<select name=one></select>
<select name=two></select>
<select name=three></select>
<select name=four></select>

<script>
var arrSel=["one","two","three","four"];//arrSel定义了要修改的下拉框
var i=0,arrData=[];//arrData中搁的是数据,每条都显示各级的数据
arrData[i++]=["(1,2,3,4)比(5,6,7,8)","请先做前面的选择","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["重","(1,2,5)比(3,6,9)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["重","重","(1)比(2)","请先做前面的选择"]
arrData[i++]=["重","重","重","1球比较重"]
arrData[i++]=["重","重","平","6球比较轻"]
arrData[i++]=["重","重","轻","2球比较重"]
arrData[i++]=["重","平","(7)比(8)","请先做前面的选择"]
arrData[i++]=["重","平","重","8球比较轻"]
arrData[i++]=["重","平","平","4球比较重"]
arrData[i++]=["重","平","轻","7球比较轻"]
arrData[i++]=["重","轻","(1)比(3)","请先做前面的选择"]
arrData[i++]=["重","轻","重","无解"]
arrData[i++]=["重","轻","平","5球比较轻"]
arrData[i++]=["重","轻","轻","3球比较重"]
arrData[i++]=["平","(9,10)比(1,11)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["平","重","(9)比(11)","请先做前面的选择"]
arrData[i++]=["平","重","重","9球比较重"]
arrData[i++]=["平","重","平","11球比较轻"]
arrData[i++]=["平","重","轻","10球比较重"]
arrData[i++]=["平","平","(1)比(12)","请先做前面的选择"]
arrData[i++]=["平","平","重","12球比较轻"]
arrData[i++]=["平","平","平","无解"]
arrData[i++]=["平","平","轻","12球比较重"]
arrData[i++]=["平","轻","(9)比(10)","请先做前面的选择"]
arrData[i++]=["平","轻","重","9球比较轻"]
arrData[i++]=["平","轻","平","11球比较重"]
arrData[i++]=["平","轻","轻","10球比较轻"]
arrData[i++]=["轻","(1,2,5)比(3,6,9)","请先做前面的选择","请先做前面的选择"]
arrData[i++]=["轻","重","(1)比(3)","请先做前面的选择"]
arrData[i++]=["轻","重","重","3球比较轻"]
arrData[i++]=["轻","重","平","5球比较重"]
arrData[i++]=["轻","重","轻","无解"]
arrData[i++]=["轻","平","(7)比(8)","请先做前面的选择"]
arrData[i++]=["轻","平","重","7球比较重"]
arrData[i++]=["轻","平","平","4球比较轻"]
arrData[i++]=["轻","平","轻","8球比较重"]
arrData[i++]=["轻","轻","(1)比(2)","请先做前面的选择"]
arrData[i++]=["轻","轻","重","2球比较轻"]
arrData[i++]=["轻","轻","平","6球比较重"]
arrData[i++]=["轻","轻","轻","1球比较轻"]
</script>
<script>
function qswhInit(num){
/******* by qiushuiwuhen(2002-5-15) ********/
 var i,j,arrTemp=[];
 for(i=0;i<num;i++)arrTemp[i]=document.all(arrSel[i]).options[document.all(arrSel[i]).selectedIndex].text
 if(num==arrSel.length){//这里处理最后的数据。
  return;
 }
 with(document.all(arrSel[num])){
  length=0
  for(i=0;i<arrData.length;i++){  
   for(j=0;j<num;j++)if(arrTemp[j]!=arrData[i][j])break;
   if(j!=num)continue;
   if(length==0||options[length-1].text!=arrData[i][num])
   options[length++].text=arrData[i][num];
  }
  onchange=new Function("qswhInit("+(num+1)+")");
  onchange();
 }
}
qswhInit(0);//初始化
</script>呵呵。厉害啊。

Tags: 订阅到抓虾
  • 相关文章
  • quote 2.sadasdas 删除留言
  • 12个球 1个天平,左放6,右放6,一个重的在1边,剩下6个淘汰6个;再来 左3个,右3个,取一边,又淘汰3个;剩下3个放天平上2个,如果有重的就直接出来了,2个平衡,剩下的就是重的,干嘛搞那么复杂,相当迷糊。
  • 10/25/2006 6:56:23 PM
  • quote 4.fangfang 删除留言
  • 楼上的显然不懂天平,不懂就不要乱说。
    本来就是很简单的事情
    同意:
    2.sadasdas 删除留言

    12个球 1个天平,左放6,右放6,一个重的在1边,剩下6个淘汰6个;再来 左3个,右3个,取一边,又淘汰3个;剩下3个放天平上2个,如果有重的就直接出来了,2个平衡,剩下的就是重的,干嘛搞那么复杂,相当迷糊。
    2006-10-25 18:56:23
  • 11/22/2006 9:35:03 PM
  • quote 6. 删除留言
  • 5、10分钟内做出来:你或者以前做过,或者多半是个马虎的人。

    呵呵……2.sadasdas和4.fangfang。

    第一次称的时候你们打算淘汰轻的6个还是重的6个啊?要知道有一个球质量异常,注意是“异常”。可能轻可能重哦。

    显然。不懂天平。呵呵。
  • 12/10/2006 10:28:38 PM
  • quote 7.yong 删除留言
  • == 关键是不知道那个坏的球是偏重 或者偏轻 所以必须得那么复杂算
    说了 你是个马虎的人了吧 没看轻题目就一下子算出来
  • 12/28/2006 10:16:57 PM

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

  • 推荐加快网速杜绝病毒木马的firfox浏览器(完全免费!)
  • 使你的网站每月增加几百美元的收入,赶快点击注册把!
分享到饭否

网站目录

一周热门

随机文章

最近发表

最新留言

Tags

Powered By Z-Blog | Z-Blog Plus 1.5 Build 60326

Copyright 平凡生活网络博客,欢迎转载,转载请著明--转载自“平凡生活博客网站