“分治”是一种常用的解题策略。
它是将一个难以直接解决的大问题,分解成若干规模较小的、相互独立的、相同或类似的子问题,分而治之,再合成得到问题的解。根据“平衡子问题”的思想,一般会把问题分解成两个规模相等的子问题,也就是“二分法”,比如经典的二分查找(折半查找)问题。
例:找伪币
【问题描述】 给出 16 个一模一样的硬币,其中有 1 个是伪造的,并且那个伪造的硬币比真的硬币要轻一些,本题的任务是找出这个伪造的硬币。为了完成这一任务,将提供一台可用来比较两组硬币重量的仪器,利用这台仪器,可以知道两组硬币孰轻孰重
【问题分析】
方法1 :穷举法 依次比较硬币 1 与硬币 2、硬币 3 和硬币 4、硬币 5 和硬币 6……最多通过 8 次比较来判断伪币的存在并找出这个伪币。
方法2:二分法 把 16 个硬币的情况看成一个大问题。第一步,把这一大问题分成两个小问题,随机选择 8个硬币作为第一组(A 组),剩下的 8 个硬币作为第二组(B 组)。第二步,利用仪器判断伪币在 A组还是在B组中,如果在A组中,则再把A组中的8