日期:2014-05-18  浏览次数:20415 次

一道有意思的考试题 ------ 如何找出那个苹果?
有12苹果,其中有1个与其余的11个都不同,或者比它们重,或者比他们轻。现在给出一个没有砝码的天平,要求称量3次找

出这个苹果,并且判断其轻重情况!

------解决方案--------------------
用二分法来称
------解决方案--------------------

------解决方案--------------------
探讨

用二分法来称

------解决方案--------------------

------解决方案--------------------
3分来做。
------解决方案--------------------

------解决方案--------------------
不知道这个是轻是重的话3次分不出来


------解决方案--------------------
想了下,就算是用二分法也没法3次之内确定是哪个苹果的(除非运气好)~!~!~!
例如:
第一次 6V6
第二次 3V3
第三次 1V1 到这又分三种情况的 
假如剩余三个苹果分别编号 1 2 3 ,其中只有一个重量不同
则除非运气好,直接1V1的时候就是两个重量一样的苹果,那么剩下的那个就是你要的。
如果1V1的时候,不是2个重量一样的苹果,三次根本就找不出来的,而且你的苹果的重量还不知道是轻还是重的


------解决方案--------------------
不好意思,昨天想了下,二分法不行,走不同!挺有难度的,希望楼主能公布结果哈
------解决方案--------------------
不知道轻还是重,三次称不出来哈,等大牛
------解决方案--------------------
4 4 4

2 2 

1 1

------解决方案--------------------
探讨

不知道这个是轻是重的话3次分不出来

------解决方案--------------------
偶又思考了下,结果如下:
把苹果编为1-12号
第一次称,(1,2,3,4)vs(5,6,7,8)
【平,不一样的在9,10,11,12里;(9.10)vs(1,2),平,在11,12里,不平, 在 9,10里,接下来不用我说了吧】
如果第一次称不平,不一样的在1,2,3,4,5,6,7,8里,假设天平偏向1,2,3,4, 即1,2,3,4比5,6,7,8重
第二次称(2,3,4,5)VS(1,9,10,11)
【平,不一样的为6,7,8且不一样的苹果轻
偏向2,3,4,5,不一样的在2,3,4中,且不一样的苹果重
偏向1,9,10,11,不一样的在1,5中】
第三次称量
【不一样的在6,7,8中,6vs7称次,哪个轻就哪个,平就是8,下面同理】
------解决方案--------------------
三次的话,还不止轻重,运气的成分大一点
------解决方案--------------------
http://zhidao.baidu.com/question/121427515.html
------解决方案--------------------
说说15楼的还是不行。

就拿最后一步来说
6vs7称次,哪个轻就哪个,因为苹果不知道是轻是重 ,所以即使不一样的话,依然无法分辨出是哪个苹果,除非两个相等,才能判断出是另外一品国
------解决方案--------------------
SQL code

if object_id('tempdb..#t') is not null
    drop table #t

create table #t(ID int identity(1,1) primary key,AppleName nvarchar(20),Weight decimal(6,2))

insert into #t(AppleName,Weight)
select '苹果A',12.5 union all 
select '苹果B',12.5 union all 
select '苹果C',12.5 union all 
select '苹果D',12.5 union all 
select '苹果E',12.5 union all 
select '苹果F',12.5 union all 
select '苹果G',12.5 union all 
select '苹果H',12.5 union all 
select '苹果I',12.5 union all 
select '苹果J',12.5 union all 
select '苹果K',11.5 union all 
select '苹果L',12.5

select * from #t

declare @searchApple int                --待寻找的苹果ID
declare @appleIsWeight bit                --苹果是较重还是较轻
declare @errorMessage nvarchar(100)        --分配的苹果与命题中的有差异产生的错误信息
set @errorMessage=''

declare 
@weightFirst int,    --第一次分组,0表示Group1和Group2等重,1表示Group1>Group2,2表示Group1<Group2
@weightSecond int,    --第二次分组,0表示Group1和Group2等重,1表示Group1>Group2,2表示Group1<Group2
@weightThird int    --第三次分组,0表示Group1和Group2等重,1表示Group1>Group2,2表示Group1<Group2


declare @weightA decimal(6,2),@weightB decimal(6,2)
--进行第一次称重,Group1(1,2,3,4),Group2(4,5,6,7)
select @weightA=sum(Weight) from #t where ID > 0 and ID <= 4
select @weightB=sum(Weight) from #t where ID > 4 and ID <= 8
if @weightA=@weightB
    set @weightFirst=0
else if @weightA>@weightB
    set @weightFirst=1
else 
    set @weightFirst=2

--第二次称重
----如果第一次天枰平衡,则在剩下的两个里面筛选(比较方式:拿一个和1-8中任意一个比较)
if @weightFirst=0
begin
    select @weightA=Weight from #t where ID = 1 
    select @weightB=Weight from #t where ID = 11
    if @weightA>@weightB
    begin
        s