社区
数据结构与算法
帖子详情
如何解这道题
yj9853051
2005-10-20 11:57:32
有12 个形状一样小球 其中有一个 重量和其它不一样 用一个天平 称三次 把这个不一样的找出来
能不能用程序解它
...全文
194
5
打赏
收藏
如何解这道题
有12 个形状一样小球 其中有一个 重量和其它不一样 用一个天平 称三次 把这个不一样的找出来 能不能用程序解它
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mmmcd
2005-10-21
打赏
举报
回复
如何用动态规划?
xiaocai0001
2005-10-20
打赏
举报
回复
老题了
看看下面这个帖子, 上面有详细的解答
http://www.oursci.org/magazine/200109/010918-1.htm
jp1984
2005-10-20
打赏
举报
回复
动态规划 罗
njwangchuan
2005-10-20
打赏
举报
回复
偷懒啊各位,转一下嘛~~
以下内容为转载:
称球问题的经典形式是这样的:
“有十二个外表相同的球,其中有一个坏球,它的重量和其它十
一个有轻微的(但是可以测量出来的)差别。现在有一架没有砝码的
很灵敏的天平,问如何称三次就保证找出那个坏球,并知道它比标准
球重还是轻。”
这可能是网上被做过次数最多的一道智力题了。它的一种解法如
下:
将十二个球编号为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号是坏球且比标准球重;
够麻烦的吧。其实里面有许多情况是对称的,比如第一次称时的
右重和右轻,只需考虑一种就可以了,另一种完全可以比照执行。我
把整个过程写下来,只是想吓唬吓唬大家。
稍微试一下,就可以知道只称两次是不可能保证找到坏球的。如
果给的是十三个球,以上的解法也基本有效,只是要有个小小的改动,
就是在这种情况下,在第一第二次都平衡的时候,第三次还是有可能
平衡(就是上面的第2.2.2步),那么我们可以肯定坏球是13号球,可
是我们没法知道它到底是比标准球轻,还是比标准球重。如果给的是
十四个球,我们会发现无论如何也不可能只称三次,就保证找出坏球。
gxqcn
2005-10-20
打赏
举报
回复
最佳方案请见:
http://bbs.xilu.com/cgi-bin/bbs/viewgoodbbs?forum=rd&message=290&delno=19
6道题学会JAVA
解
大数问题
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入输入一个整数m(0 输出输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 304140932017133780436126081660647688443
Java 代码界 3% 的王者?看我是如何
解
错这 5 道题的
前些日子,阿里妹(妹子出题也这么难)发表了一篇文章《悬赏征集!5 道题征集代码界前 3% 的超级王者》——看到这个标题,我内心非常非常激动,因为终于可以证明自己技术很牛逼了。 但遗憾的是,凭借 8 年的 Java 开发经验,我发现这五道题自己全
解
错了!惨痛的教训再次证明,我是那被秒杀的 97% 的工程师之一。 不过,好歹我这人脸皮特别厚,虽然全都做错了,但还是敢于坦然地面对自己。 01、原始类型的...
牛客前200道题文字
解
1.反转链表: 重点思路: 将原来链表的一个节点断出来后当作新链表的头 核心代码: new_tail(新链表尾) new_cur(新链表游标) cur(原来链表游标) cur 你=cur->next(原来链表游标的下一个节点) 1.如果是第一个节点地址赋值给new_tail new_tail = head 2.将游标指向头 cur = head new_cur = head 2.如果是其他的节点则将新链表头连接到该节点之后 new_tail = new_tail->next cur = cur
【HDU100】杭电入门一百道 C++ 全 题
解
1. 好像没有HDU2038 呜呜呜2. 主要是整合提供了AC的代码,思路不太详细qwq目录前言1. ASCII码排序(HDU2000)2. 计算两点间的距离(HDU2001)3. 计算球体积(HDU2002)4. 求绝对值(HDU2003)5. 成绩转换(HDU2004)6. 第几天?(HDU2005)7. 求奇数的乘积(HDU2006)8. 平方和与立方和(HDU2007)9. 数值统计(HDU2008)10. 求数列的和(HDU2009)11. 水仙花数(HDU2010)
【用RKHash
解
这道简单题】
用rkhash
解
这道leetcode字符串匹配,是不是更快更有趣呢!
数据结构与算法
33,025
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章