|
![]() | 作者: fatcat [xu09]
![]() |
登录 |
13个小球,12个相同,一个不同,外表无法分辨出来,现在用天平3次找出不同的那个? 这只是偶在别的地方发现觉得很有意思,所以也拿到我们的论坛里面来讨论讨论, |
地主 发表时间: 04/15 11:32 |
![]() | 回复: 286 [unique] ![]() |
登录 |
是编程实现?还是只讨论方法? 5+5 2+2 1+1 |
B1层 发表时间: 04/15 12:32 |
![]() | 回复: zhouyu [zhouyu] ![]() |
登录 |
没有想出来 顶一下希望得到答案 |
B2层 发表时间: 04/15 22:02 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
to286: 能给我们讲解一下你这个算法的思路吗?` 我怎么都想不通你的方法能够把另一个球称出来,因为如果5V5是等的情况,那自然好判断,可是如果不等的话,那你再进入2v2的判断,我认为就是个误区! 还请教你把整个计算过程贴上来~!好让大家学习学习~! 我想不管是编程实现也好还是普通的讲解一下,但要的是大家明白你的思路,知道你是如何实现的~! |
B3层 发表时间: 04/16 08:54 |
![]() | 回复: 286 [unique] ![]() |
登录 |
3+3+3+3+1 前两3如果等,则3、4两组3比。 如果前两3不等。由其中任意一级与第三组(第三组肯定标准)比,能找出不标准有那一组。 由不标准的组中的3个里面再比较一个还是容易的。 |
B4层 发表时间: 04/16 13:01 |
![]() | 回复: 286 [unique] ![]() |
登录 |
不对,我再想想。 |
B5层 发表时间: 04/16 13:12 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
我认为if 3V3相等(第一次) if 3v3相等(第二次)那就剩下最后一个了。 elseif 3v3不等(第二次)那我们还要进行第三次判断 if 1v1不等的话(第三次) 那我们就再也没有机会了啊。 因为前提只要三次比较的啊。 呵呵:) 我第一次的看到这个题目的时候我也想了很多方法,可是很多都是无功而返~ 在此声明,我不是在针对286。。呵呵:)感觉上,因为他提出的算法,我都把它推翻了~!其实我只是想讨论也让大家开动一下脑筋,看有什么简便的方法来解答这道题目~! |
B6层 发表时间: 04/16 14:26 |
![]() | 回复: tz0303 [tz0303] ![]() |
登录 |
不会...等结果 |
B7层 发表时间: 04/16 14:32 |
![]() | 回复: trueboy_cn [trueboy_cn] ![]() |
登录 |
286已经回答了解题的思路。 |
B8层 发表时间: 04/16 16:37 |
![]() | 回复: zhouyu [zhouyu] ![]() |
登录 |
楼上的朋友你明白了请讲一下好吗 我还是没有看懂286兄的思路 我也想过好多方法还是不成 |
B9层 发表时间: 04/16 17:23 |
![]() | 回复: slipshod [slipshod] ![]() |
登录 |
我想思路是这样的:4+4+3+2(A+B+C+D) 4V4 I、相等说明在剩下的5个内,就: A+C V 2C 1:相等,A V D 2:不等,C(左)+C(右) V 2A II、不等,2A+B V 2A+B 。。。。。。 。。。。。。 注意,出现不等要留意哪边重,当第2次出现不等时,就说明了一些问题! |
B10层 发表时间: 04/16 17:37 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
把13个球编上号,依次为A[1].......A[13],把问题球定义为A[x] a:A[1],A[2],A[3],A[4] b:A[5],A[6],A[7],A[8] c:A[1],A[2],A[3] d:A[9],A[10],A[11] e:A[1],A[2],A[5] f:A[3],A[6],A[9] if(a==b) //确定x在9~13中 { if(c==d) //确定x在12,13中 { if(A[1]==A[12])//确定x为13 x=13; else //确定x为12 x=12; } else if(c>d)//确定x在9,10,11中,并且x比其它球轻 { if(A[9]>A[10]) x=10; else if (A[9]<A[10]) x=9 else x=11; } else if(c<d)//确定x在9,10,11中,并且x比其它球重 { if(A[9]>A[10]) x=9; else if (A[9]<A[10]) x=10 else x=11; } } else if(a>b) // 确定x在1~8中,并且要么为x在1~4中比其他球重或者为x在5~8中比其他球轻 { if(e>f)//确定x在1,2中并且比其他球重或者x=6并且比其他球轻 { if(A[1]==A[2]) x=6; else if(A[1]>A[2]) x=1; else if(A[1]<A[2]) x=2; } if(e==f)//确定x在7,8中并且比其他球轻或者x=4并且比其他球重 { if(A[7]==A[8]) x=4; else if(A[7]>A[8]) x=8; else if(A[7]<A[8]) x=7; } if(e<f)//确定x=5并且比其他球轻或者x=3并且比其他球重 { if(A[1]==A[3]) x=5; else if(A[1]<A[3]) x=3; } } else if(a<b) // 确定x在1~8中,并且要么为x在1~4中比其他球轻或者为x在5~8中比其他球重 { if(e<f)//确定x在1,2中并且比其他球轻或者x=6并且比其他球重 { if(A[1]==A[2]) x=6; else if(A[1]>A[2]) x=2; else if(A[1]<A[2]) x=1; } if(e==f)//确定x在7,8中并且比其他球重或者x=4并且比其他球轻 { if(A[7]==A[8]) x=4; else if(A[7]>A[8]) x=7; else if(A[7]<A[8]) x=8; } if(e>f)//确定x=5并且比其他球重或者x=3并且比其他球轻 { if(A[1]==A[3]) x=5; else if(A[1]>A[3]) x=3; } } |
B11层 发表时间: 04/17 09:53 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
这是我一个同学告诉我的解法,大家提提意见, 看是否有什么不对或者多余的地方,或者是否还有更加简便的方法? |
B12层 发表时间: 04/17 09:55 |
![]() | 回复: erifaw [erifaw] ![]() |
登录 |
我认为实现思想: 1个站边, 12个平分称(第一次) 天平一边的6个站边,另6个平分称(第二次) 剩下三个再称一次(第三次);注:这是最坏情况 具体编码实现应该不难, |
B13层 发表时间: 04/17 16:39 |
![]() | 回复: fatcat [xu09] ![]() |
登录 |
嗯! 有理~! |
B14层 发表时间: 04/17 17:49 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号