站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题一直未得到解决的笔试题目

一直未得到解决的笔试题目

摘要: 一直未得到解决的笔试题目


一共有13个球,只有一个球的重量与其它的不一样
提供一个天平(无刻度),要求称3次 找出重量不一样的那个球!~??


分析了一下要求,如果告诉我们这个重量不一样的球(设为Q)比别的球重还是轻,则容易算出这个球,如果不告诉的话,我是没有什么办法了。

下面说说我的思路:设重量不一样的球为Q,并且Q比别的球重。
1、先随便挑出12个,分为两组,每组6个放在天平的两端,如果天平平衡,则剩下的一个球就是那个Q。如果不平衡,则转到2。
2、Q一定在比较重的6个球里。将这6个球分为两组,每组3个放在天平的两端,则Q肯定还在重的那3个球里。
3、在最后比较重的那3个球里随便跳出2个,分别放在天平的两端,如果天平平衡,则剩下的那个球就是Q,否则,放在天平中的比较重的球就是Q。


想不起来了。上学的时候好像问过。不过没有十三个那么多吧。七个?


是不知道轻重的。


4个对4个。
再把这两个四个的中两个拿出来。换上另五个里的四个。


楼上的仔细讲一下`~~~~ 我没太想通

比如 第一次 4 :4 平
第二次 4:4 不平 在这里你无法判断哪个球是轻还是重啊~~??
第三次 你怎么拿?


第一次
5VS5,二种情况。
---平衡,那真是太好了。还有3个
第二次 换上两个。如果还平衡,那么还有的一个就是。搞定
如果不平衡,说明新拿的两个球里有一个是要找的球。
第三次 虽便拿一个已经平衡的球和这两个球VS。
平衡说明另一个是要找的球。不平衡这个球就是。轻重也测出来了。
不平衡,说明要找的球就在这八个当中。但是哪个死球是轻重的。
第二次 两边都换下两球。把剩下的五个球里拿四个。各放两个。
如果这次平衡,则说明我们两下的四个球里有我们要找的球。
第三次,把这两对球各拿出一个。换上已经没有问题的球。


我想了一下。四四是不行的。


就是一半一半嘛,还有很难的吗?gotorun(化俗)是三次就解决了嘛


五五分还是不行。还差一步。还要六六分。


6VS6呢
1,不平衡,向左
对换其中三个调换。或是四个调换。也不行啊。

大家一起来讨论。



他回答是在一个基础上的。就是知道不一致的球是轻还是重。


1:4:4称一下,不平,那么就在这8个里面找,
平,在另外的5个里面找

2: 5个球的情况:
2:2
平,余下的那个球就是。
不平,再称一次。

3 8个球的情况,会有一边少。很简单,不说了


这道题也不是很难:
(1)5 vs 5 两个5不好辨认,我为它们加个符号吧。5-#60;1-#62; vs 5-#60;2-#62;
如果平衡的话,不用想了,肯定在剩下的3个中,接下去就不说了,比较简单。



第一次
左边6个右边6个
如果一样重的话,剩下那个就是重的,如果不一样重,把轻的和剩下那个放开,拿重的那6个做第二次实验
第二次
左边3个右边三个
取重3的继续做第三次
第三次,每边一个,
如果一样重的话,剩下那个为重的
如果不一样,重的那个就是重的


下班了,回去再写


目前我觉得 lu8088(我们一起努力吧) 55分的正确

大家看看还有漏洞吗??

第一次
5VS5,二种情况。
---平衡,那真是太好了。还有3个
第二次 换上两个。如果还平衡,那么还有的一个就是。搞定
如果不平衡,说明新拿的两个球里有一个是要找的球。
第三次 虽便拿一个已经平衡的球和这两个球VS。
平衡说明另一个是要找的球。不平衡这个球就是。轻重也测出来了。
不平衡,说明要找的球就在这八个当中。但是哪个死球是轻重的。
第二次 两边都换下两球。把剩下的五个球里拿四个。各放两个。
如果这次平衡,则说明我们两下的四个球里有我们要找的球。
第三次,把这两对球各拿出一个。换上已经没有问题的球。



正确的答案是分成:
4:4:4
情况很复杂,最后总共有26种情况:
首先给每个球编号,
最后结果:依据天平的倾斜判断出。
lqqm上有详细的解释,去那里找吧!~



1. 从十三个求中任意取两组,每组四个,称这两组球:
若两组一样重,则说明这两组的球重量都正常,从中任意取出一个,称该球为Q.(此时仍有5各球未参与称重)
2. 从未参与称重的球中任取一个,与Q成为一组(A组),再从剩下的四个中任取两个(B组),与A组称:
2.1 若一样重,从B组中任取一球,与Q比较:
若一样重,则说明B组里未比较的那个球是不正常球. 若不一样重,则与Q球比较的那个球是不正常球.
2.2 若不一样重,则说明不正常球在最后剩下的两各中,重复2.1操作,即可找出不正常球
3 若刚开始称重的两组不一样重,
还没想清楚


我靠,方法多了去了
1,6/6/1 平为1,不平为重6
2/2/2 平为多出来的2,不平为重2
1/1 重1为目标
2,6/6/1 平为1,不平为重6
3/3 重3
1/1/1 平为多出来的1,不平为重1
3,5/5/3 平为3,不平为重5
2/2/1或者1/1/1 平为1,不平为重2/平为多出来的1,不平为重1
1/1 懒的说
4,4/4/5 懒的说
2/2或者2/2/1 懒的说
1/1或者1/1 懒的说
5,...... 懒的打字了


就出10分,楼主你也太......


第一次
左边6个右边6个
如果一样重的话,剩下那个就是重的,如果不一样重,把轻的和剩下那个放开,拿重的那6个做第二次实验
第二次
左边3个右边三个
取重3的继续做第三次
第三次,每边一个,
如果一样重的话,剩下那个为重的
如果不一样,重的那个就是重的


这样肯定不行
要是球是最轻的怎么办?


将球编号为1-13,先4/4称。

if(1,2,3,4==5,6,7,8){//异类在剰下的五个球9-13中
if(9,10,11==1,2,3) {//异类在在12,13中
return (12==1)?13:12;
}
else if(9,10,11-#60;1,2,3) {//异类在在9,10,11中较轻的
if(9==10) {
return 11;
}
else {
return (9-#60;10)?9:10;
}
else {//异类在在9,10,11中较重的
if(9==10) {
return 11;
}
else {
return (9-#60;10)?10:9;
}
}
}

else if(1,2,3,4-#60;5,6,7,8){//异类在这1-8这8个球当中
if(1,2,3,5,6-#60;9,10,11,12,13) {//肯定是1,2,3其中较轻的
if(1==2) {
return 3;
} else {
return (1-#60;2)?1:2;
}
}
else if(1,2,3,5,6-#62;9,10,11,12,13) {//肯定是5,6其中较重的
return (5-#62;6)?5:6;
}
else if(1,2,3,5,6==9,10,11,12,13) {//肯定是4,7,8之一
if(4,7==9,10) {
return 8;
}
else if(4,7-#60;9,10) {
return 4; //根据第一称,7是不可能轻的了
}
else if(4,7-#62;9,10) {
return 7; //根据第一称,4是不可能重的了
}
}
}


else if(1,2,3,4-#62;5,6,7,8){//异类在这1-8这8个球当中
if(1,2,3,5,6-#62;9,10,11,12,13) {//肯定是1,2,3其中较重的
if(1==2) {
return 3;
} else {
return (1-#62;2)?1:2;
}
}
else if(1,2,3,5,6-#60;9,10,11,12,13) {//肯定是5,6其中较轻的
return (5-#60;6)?5:6;
}
else if(1,2,3,5,6==9,10,11,12,13) {//肯定是4,7,8之一
if(4,7==9,10) {
return 8;
}
else if(4,7-#62;9,10) {
return 4; //根据第一称,7是不可能重的了
}
else if(4,7-#60;9,10) {
return 7; //根据第一称,4是不可能轻的了
}
}
}



奇怪,刚发表时还有缩进,怎么过一段时间就没了?


我们要注意到一点,天平是有平衡性的。

当你在天平两端:一边放100千克的货物,别一边放101千克的货物,天平只分有微小的偏转。
但当你一边放10千克,别一边放11千克的时候,那差距可就太明显了。

所以第一次放:4:4


早就做个的问题


都仔细看看题目,都是自以爲是的人,那個疵品球不但有可能重,也有可能輕,所以,儅最後剩下1:1的時候,是不能用1次稱量出哪個是疵品球的!


我试过了。解不开哦。用了6543比例都差一次。等待高手。


HeartLost 我的叫你一生大哥~~ 先把题目读明白

等待高手吧!~~ 目前还没解决


百度一下不
我已前查过
答案好像很长的


我认为我的方法已经解决了,如果有什么漏洞,给出测试用例,验证一下就知道了。
看清楚再下结论。


這題只有唯一解,我按照對這道題目答案的印象說一下思路
1、首先1球不管,其他12球分成4組:3,3,3,3,稱其中2組
2、將1組取1球和3組任意2球合併,2組取2球和4組任意1球合併,再稱量
3、此時你會發現,現在的球已經變成1,2,1,2,1,2,1,2共8組,並且,疵品球在這樣的情況下已經可以通過一次稱量取得,不管它是比正常球重還是比正常球輕。

這題我是意外得來的答案,我初看時也以爲很簡單,不願意和出題者討論,得到正確答案才知道,什麽4,4,5,5的方法全都是錯的!


将十二个球编号为1-12。

第一次,先将1-4号放在左边,5-8号放在右边。
  1.如果右重则坏球在1-8号。
    第二次将2-4号拿掉,将6-8号从右边移到左边,把9-11号放
    在右边。就是说,把1,6,7,8放在左边,5,9,10,11放在右边。
      1.如果右重则坏球在没有被触动的1,5号。如果是1号,
       则它比标准球轻;如果是5号,则它比标准球重。
        第三次将1号放在左边,2号放在右边。
          1.如果右重则1号是坏球且比标准球轻;
          2.如果平衡则5号是坏球且比标准球重;
          3.这次不可能左重。
      2.如果平衡则坏球在被拿掉的2-4号,且比标准球轻。
        第三次将2号放在左边,3号放在右边。
          1.如果右重则2号是坏球且比标准球轻;
          2.如果平衡则4号是坏球且比标准球轻;
          3.如果左重则3号是坏球且比标准球轻。
      3.如果左重则坏球在拿到左边的6-8号,且比标准球重。
        第三次将6号放在左边,7号放在右边。
          1.如果右重则7号是坏球且比标准球重;
          2.如果平衡则8号是坏球且比标准球重;
          3.如果左重则6号是坏球且比标准球重。
  2.如果天平平衡,则坏球在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号是坏球且比标准球轻。
  3.如果左重则坏球在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号是坏球且比标准球重;


|--右--( 1轻)
|--右--(1 ; 2)|--平--( 5重)
| |--左--( )
|
| |--右--( 2轻)
|--右--(1,6-8; |--平--(2 ; 3)|--平--( 4轻)
| 5,9-11)| |--左--( 3轻)
| |
| | |--右--( 7重)
| |--左--(6 ; 7)|--平--( 8重)
| |--左--( 6重)
|
| |--右--(10重)
| |--右--(9 ;10)|--平--(11重)
| | |--左--( 9重)
| |
| | |--右--(12重)
(1-4;5-8)|--平--(1-3; |--平--(1 ;12)|--平--(13轻, 13重)*
| 9-11)| |--左--(12轻)
| |
| | |--右--( 9轻)
| |--左--(9 ;10)|--平--(11轻)
| |--左--(10轻)
|
| |--右--( 6轻)
| |--右--(6 ; 7)|--平--( 8轻)
| | |--左--( 7轻)
| |
| | |--右--( 3重)
|--左--(1,6-8; |--平--(2 ; 3)|--平--( 4重)
5,9-11)| |--左--( 2重)
|
| |--右--( )
|--左--(1 ; 2)|--平--( 5轻)
|--左--( 1重)


哦,我看错了,不过有解

解题思路:12个标准球,1个非标准球。在找出非标准球的时候,每一个球都有可能,称之为嫌疑球。在这里我要先讨论几个可以用一次称量就找到的情况:
1. 有两个嫌疑球,和若干标准球的时候,可以一次找到。具体的做法就是取一个嫌疑球同一个标准球比较,如果重量不同,则可以确定天平上的嫌疑球就是非标准球,否则,剩下的那个就是非标准球。
2. 有三个嫌疑球,和有这三个嫌疑球参与的一次比较结果,并且在这次比较中,三个嫌疑球不在同一侧。比较方法是,取两侧的嫌疑球各一个,同两个标准球比较,如果相同,那就可以肯定,没有参加比较的嫌疑球是非标准球,如果两个嫌疑球一侧偏重,则上次比较结果中在较重一侧的嫌疑球是非标准球,否则就是较轻一侧的嫌疑球是非标准球。
3. 只剩一个嫌疑球的时候。

解题方法:
首先对13个球标号并分组:
1、 2、 3、 4 A1组
5、 6、 7、 8 B1组
9、10、11、12 C1组
13
称量A与B,记录结果R1(这里用大于0表示A-#62;B,其它类推)

然后二次分组
13、2、 7、 8 A2组
1、 6、11、12 B2组
5、10、 3、 4 C2组
9
称量A2与B2,记录结果R2

开始分析结果:
如果R1=R2=0,则证明非标准球没有上过天平,这样,嫌疑球有2个:9号球、10号球。符合我前面提出的解决条件。可以解决这个问题。结果将在9,10中产生。

如果R1=0,R2-#62;0(或者R2-#60;0),则证明第二次测量的时候,非标准球上了天平,这样,嫌疑球有三个:13,11,12。这符合我在前面提到的第二种情况,也可解决。结果将在13,11,12中产生。

如果R1-#62;0,R2=0,非常简单,这证明非标准球在第二次测量的时候,离开了天平,嫌疑球有三个:5,3,4。我们可以用第一次的比较结果作条件,用第二个解决办法找到非标准球。结果将在5,3,4中产生。

如果
R1-#62;0,R2-#62;0,证明第二次测量的时候,非标准球一直天平上,但此时嫌疑球好像是有四个:1、2、6、7、8,其实不是这样的,从测试结果上看,非标准球没有离开过自己的位置,这样的话,只有2与6是嫌疑球。结果将在2,6中产生。

R1-#62;0,R2-#60;0,同理,非标准球移动了自己的位置,这么来说,嫌疑球就应该是:1,7,8。显然这符合第二个条件。结果将在1,7,8中产生。

显然已经没有必要讨论R1-#60;0的情况了,这同R1-#62;0实际上是一样的。


申明一下,此解答不是我想到的,只是我看懂了,此解答作者Beyond_ml(malei@bisp.com)


好题 顶


我仔细看了 onlyxu 的答案,应该是对的。原来我以为只有我这一种解法,现在看来,其实可以变化出好几种。下面是我的解法:

把 13 个球编号为 123456789ABCD,按下面的方法去称量:

第一秤 第二秤 第三秤 结论 说明
------ ------ ------ ---- ------------------------
1234 = 5678 问题出在 9ABCD
678 = 9AB 问题出在 CD
B = C D
B -#62; C C
B -#60; C C
678 -#62; 9AB 9AB 里有一个轻的
9 = A B
9 -#62; A A
9 -#60; A 9
678 -#60; 9AB 9AB 里有一个重的
9 = A B
9 -#62; A 9
9 -#60; A A
1234 -#62; 5678 9ABCD 都是好的,如果问题出在 1234 里,那么它是重的,如果问题出在 5678 里,那么它是轻的
1235 = 49AB 12345 都是好的,678 里有一个轻的
6 = 7 8
6 -#62; 7 7
6 -#60; 7 6
1235 -#62; 49AB 45 都是好的,123 里有一个重的
1 = 2 3
1 -#62; 2 1
1 -#60; 2 2
1235 -#60; 49AB 123 都是好的,剩下两种可能:4 偏重,或者 5 偏轻
5 = 9 4
5 -#62; 9 ? 如果 5 有问题,它一定是偏轻,不可能出现这种情况
5 -#60; 9 5
1234 -#60; 5678 9ABCD 都是好的,如果问题出在 1234 里,那么它是轻的,如果问题出在 5678 里,那么它是重的
1235 = 49AB 12345 都是好的,678 里有一个重的
6 = 7 8
6 -#62; 7 6
6 -#60; 7 7
1235 -#62; 49AB 123 都是好的,剩下两种可能:4 偏轻,或者 5 偏重
5 = 9 4
5 -#62; 9 5
5 -#60; 9 ? 如果 5 有问题,它一定是偏重,不可能出现这种情况
1235 -#60; 49AB 45 都是好的,123 里有一个轻的
1 = 2 3
1 -#62; 2 1
1 -#60; 2 2



我仔细看了 onlyxu 的答案

找不出任何意外的情况了!~~~ 大家看看认同吗!


huhuan107() :
我不认同,你忽视了一个很重要的条件,这个球是不知道比其它球轻还是重的,上面好多答案都忽视了这一点。因此,在你的解答中,
1234 = 5678 问题出在 9ABCD
678 = 9AB 问题出在 CD
B = C D
B -#62; C C
B -#60; C C
678 -#62; 9AB 9AB 里有一个轻的
9 = A B
9 -#62; A A ?
9 -#60; A 9 ?
678 -#60; 9AB 9AB 里有一个重的
9 = A B
9 -#62; A 9 ?
9 -#60; A A ?
在经过3步称重后你只能得到有2个球重量不一样,可是这两个球你并不知道哪一个是和其它球的重量不一样,是轻的那个?还是重的哪个?你无法知道。可能是9,也可能是A,要想知道,你还需要再称一次。


我仔细看了 onlyxu 的答案

找不出任何意外的情况了!~~~ 大家看看认同吗!

SORRY,没看仔细,你的结论是正确的!!!


TO smallBridge(萧秋雨):

hehe,老兄,你上面讨论的是我给的解答,不是楼主(huhuan107)的,也不是 onlyxu 的 :)

我想正确答案大家都已经清楚了,而且不止一个。我下面想就分析方法谈谈心得:

【只用一秤能从几个球里分辩出坏球?】

如果已知坏球是偏轻还是偏重,可以从 3 个球里挑出它来;如果不知道坏球偏轻还是偏重,只能从 2 个球里把它挑出来,还得有一个标准球帮忙才行。

【只用两秤能从几个球里分辩出坏球?】

从前面的结论进行逆推,要先用一次称量把球分成组,如果 3 个在一组,就必需已知其中坏球的轻重,如果 2 个在一组,可以不必知道轻重。

在有足够标准球帮助的情况下,两次称量最多能解决未知轻重的 5 球问题,即:先用一次称量把问题分解成 3(已知轻重)+ 2(未知轻重)问题。

【原问题中第一秤应该怎么称】

从前面的结论再逆推,第一此称量,最多只能剩下 5 个球不参与称量。如果剩多了,问题注定无法解决;如果剩少了,可能造成参与第一次称量的那些球问题过于复杂而无法解决。

所以,第一次称量应该按 4:4:5 进行,用 4 个球跟 4 个球比。

其实,问题的难点在于,如果第一次称量不平衡,可能在 4 个球里有一个偏轻,也可能是另外 4 个球里有一个偏重,这时候,第二秤怎么称?设计这个第二秤的称法,原则上仍然是把问题分解成若干个 3(已知轻重)+ 2(未知轻重)问题。

BTW: 我觉得,这是个逻辑分析问题,并不是程序题(虽然它很可能出现在程序员面试的时候),所以,没必要试图写程序解决它。要写出这样的程序,前提是你已经知道解法了。


还是有人会仔细看啊。

我写成程序的形式是为了少打一些字:),而且如果把程序稍加改动,将球用数组表示的话,可以编写出真正可执行的测试用例。


I 服了 YOU !!!!!


↑返回目录
前一篇: 已知自1970年的毫秒数(double类型),怎么转换为日期?
后一篇: 流问题:flush()方法为什么刷不出去?