算法课
一、13个硬币,有一枚假币,与其他重量不同,现在有一个天平,用分治算法尽快找出这枚硬币。
(1)6 6 1
只考虑最差的情况
66相比,6a>6b
分别用天平测6aa,6ab与6ba与6bb
其中会有一组是相等的,则可以判断出6a与6b中哪个是含假币的(或重或轻),6aa>6ab,6ba=6bb
这里认为重的是假币,则出现在6a中,经过上次判断,假定在6aa中,再分为1 、1、1即可测出。
共5次
(2)3 3 3 3 1
3a、3b、3c、3d
3a>3b,3c=3d
用3a与3c比,若3a>3c,则假币在3a中,且更重
反之,在3b中,更轻
3a分为1、1、1
共4次
(3)4 4 4 1
4a与4b比,相等
4a<4c,c有假币,更重
4c分2a、2b
2a>2b,分1、1
共4次
二、13个硬币,2个假币,与其他重量不同,现在有一个天平,用分治算法尽快找出这枚硬币。
(1)3 3 3 3 1
3a=3b,3c=3d
3a>3c
3a分1、1、1
称重1a=1b,1a<1c,才判断出重的是假币,且在3a与3b中
3b分1、1、1
(或者
1a=1b=1c,则在3c与3d中,假币更轻
再比2次)
最多需要比较7次,正常6次即可
(2)4 4 4 1
4a=4b,4a>4c
则在4a,4b中,且更重
4a分2a、2b,2a>2b,分1、1
4b同
共6次