首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一个分治法的题目,软设。解决思路

2012-02-05 
一个分治法的题目,软设。现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假

一个分治法的题目,软设。
现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假币,至少比较(63)次才能够找出该假币。
(63)A. 3 B. 4 C. 5 D. 6

= = 我感觉一次就可以了啊 第一个是假的 第一个与第二个比较大小 然后直接return

[解决办法]
Just need to times to pick out the special one.
/* a[000] b[000] c[0] d[0] */
if (a == b) {if (c < d) return c; else return d;}
else {
if(a < b) check a; // pick the lighter one from 3 balls.
else check b;
}


[解决办法]
3^2 < 16 < 3^3
因此只要3次就够了

每次分成3堆
第一次
5(左),5(右),6 
至少可以排除10个。(平衡时说明轻的在6个那堆上,否则在较轻一堆上。

第二次
2,2,1(或者2)
同理,至少排除3个,
最后剩下
1个(或2个)
之多再称一次就够了。

热点排行