@
lwlizhe 不过做法思路好像差不多,可能还有优化空间吧
三进制给小球编号:
000 001 002
010 011 012
020 021
因为只有 8 个球,所以结尾和第二位为 2 的天然少一个,所以不对其进行对比;
(一)第一步对比结尾为 0 的球和结尾为 1 的球;
因此是:
000 010 020 和 001 011 021
( 1.1 )如果平衡,那么异常球是结尾是 2 的那俩,随便找个球分别对比下,就知道异常球是哪个,是轻是重;所以三次;
( 1.2 )如果不平衡,那么异常球的结尾是 0 或 1 ;记录一下;
(二)然后对比第二位为 0 的球和结尾为 1 的球;
因此是:
000 001 002 和 010 011 012
( 2.1 )如果平衡,那么异常球第二位是 2,结合第一步中所述的,异常球结尾是 0 或 1 ;范围确定为 020 和 021,再随便找个球分别对比下,就知道异常球是哪个,是轻是重;所以四次;
( 2.2 )如果不平衡,那么异常球第二位是 0 或 1,因此范围确定为 000,010,011,001 这四个;
(三)尴尬的是,这次没有第三位可供再次对比了,都是 0 ;
但是因为 000 跟 010 、001 都组队过,唯一没组队的是 011,所以这次对比的是
000,011 和 010 001
这次肯定是不平衡的,但是可以根据上次结果判断一下:
上次结果是 000 001 这边重,这次是 000,011 这边重的话,这说明异常球是这两次中相同的部分;所以是 000 或 010 ;
那么随便拿个球对比下 000,如果相等,那就是 010 轻;如果不等,那就是 000 重;四次;
上次结果是 000 001 这边重,这次是 000,011 这边轻的话,那说明异常球是两次中不同的部分,所以是 001 和 011 ;跟上面同理,可验证是异常球及其轻重
同理可验证 000 001 这边轻的情况; 共计四次