12枚硬币称重问题(面试)

问题描述:

12枚硬币,其中11枚真币1枚假币,现有一架天平,最少称多少次可以找出这枚假币并且知道假币和真币的相对重量。

答案是三次,称重过程描述如下

第一步:分组,分三组,1 2 3 4为一组,5 6 7 8为一组,9 10 11 12为一组。
第二步,称重。

第一种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4=4 5 7 8,那么假币就在9 10 11 12这一组里面,接下来的任务就是在9 10 11 12这一组里面找到假币。第二次称重,用三枚真币(一般选择1 2 3)与9 10 11称重,如果1 2 3=8 9 10,那么12就是假币,但是不能确定假币的轻重。第三次称重,用一枚真币(一般选择1)与12称重,如果1>12,那么假币12为轻,如果1<12,那么假币12为重。
逻辑表达式:

  1. 1 2 3 4=5 6 7 8
  2. 1 2 3=8 9 10
  3. 1>12或者1<12

第二种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4=4 5 7 8,那么假币就在9 10 11 12这一组里面,接下来的任务就是在9 10 11 12这一组里面找到假币。第二次称重,用三枚真币(一般选择1 2 3)与9 10 11称重,如果1 2 3<9 10 11,那么假币就在9 10 11之间,但是且假币较重。第三次称重,如果9>10,那么假币为9,如果9<10,那么假币为10,如果9=10,那么假币为11。
逻辑表达式:

  1. 1 2 3 4=5 6 7 8
  2. 1 2 3<9 10 11
  3. 9>10或者9<10或者9=10

第三种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4=4 5 7 8,那么假币就在9 10 11 12这一组里面,接下来的任务就是在9 10 11 12这一组里面找到假币。第二次称重,用三枚真币(一般选择1 2 3)与9 10 11称重,如果1 2 3>9 10 11,那么假币就在9 10 11之间,但是且假币较轻。第三次称重,如果9>10,那么假币为10,如果9<10,那么假币为9,如果9=10,那么假币为10。
逻辑表达式:

  1. 1 2 3 4=5 6 7 8
  2. 1 2 3>9 10 11
  3. 9>10或者9<10或者9=10

第四种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4>5 6 7 8,那么可以确定9 10 11 12这四枚硬币是真币,接下来的任务就是在1 2 3 4 5 6 7 8这8枚硬币中找到假币。第二次称重,用1 2 3 5与4 9 10 11称重,如果1 2 3 5=4 9 10 11,那么可以确定假币在6 7 8中,且假币较轻。第三次称重,用6和7称重,如果6=7,那么8为假币,如果6>7,那么7为假币,如果6<7,那么6为假币。
逻辑表达式:

  1. 1 2 3 4>5 6 7 8
  2. 1 2 3 5=4 9 10 11
  3. 6>7或者6<7或者6=7

第五种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4>5 6 7 8,那么可以确定9 10 11 12这四枚硬币是真币,接下来的任务就是在1 2 3 4 5 6 7 8这8枚硬币中找到假币。第二次称重,用1 2 3 5与4 9 10 11称重,如果1 2 3 5>4 9 10 11,那么可以确定假币在1 2 3中(这里可以用假设法,假设4为假币,那么4就应该是轻的假币,这与1 2 3 4>5 6 7 8相矛盾,所以4为正币,4为正币,那么假币就在1 2 3 5之间,假设5为假币,那么5就应该是重的假币,这与1 2 3 4>5 6 7 8相矛盾,所以5为正币),且假币较重。第三次称重,用1和2称重,如果1=2,那么3为假币,如果1>2,那么1为假币,如果1<2,那么2为假币。
逻辑表达式:

  1. 1 2 3 4>5 6 7 8
  2. 1 2 3 5>4 9 10 11
  3. 1>2或者1<2或者1=2

第6种情况
第一次称重:用1 2 3 4 和 5 6 7 8 称重,如果1 2 3 4>5 6 7 8,那么可以确定9 10 11 12这四枚硬币是真币,接下来的任务就是在1 2 3 4 5 6 7 8这8枚硬币中找到假币。第二次称重,用1 2 3 5与4 9 10 11称重,如果1 2 3 5<4 9 10 11,那么可以确定假币在4 5中,但是不知道假币的轻重(因为 6 7 8 和 9 10 11 都是真币可以互换 不等式变为 1 2 3 5 < 4 6 7 8由1 2 3 4 > 5 6 7 8 知道数字4 5 互换后改变了不等式的方向 可以得到假币在 4 5 中 其他都是真币)。第三次称重,用1和4称重,如果1=4,那么5为假币且轻,如果4>1,那么4为假币且重。
逻辑表达式:

  1. 1 2 3 4>5 6 7 8
  2. 1 2 3 5<4 9 10 11
  3. 1<4或者1=4