一、 引言
穷举是解决问题的一种常用思路,当对一个问题无从下手的时候,可以考虑在问题 域允许的范围内将所有可能的结果穷举出来,然后根据正确结果的判断规则对这些结果逐个验证,从而找 出正确的结果。采用穷举的方法求解问题的答案比较适合计算机做,对这种体力活它们没有怨言,本文就 以常见的两个猜结果的题目为例,介绍一下如何通过计算机程序解决此类问题,顺便介绍一下穷举法常见 的算法结构和实现方式。
二、 猜结果游戏的分析过程
先来看一个问题,有五个运动员 (甲、乙、丙、丁、戊)参加运动会,分别获得了一百米、二百米、跳高、跳远和铅球冠军,现在有另外 四个人(A、B、C、D)对比赛的结果进行了描述,分别是:
A说:“乙获得铅球冠军,丁获得跳高 冠军”
B说:“甲获得一百米冠军,戊获得跳远冠军”
C说:“丙获得跳远冠军,丁获得二 百米冠军”
D说:“乙获得跳高冠军,戊获得铅球冠军”
A、B、C和D四个人每个人的描述 都对一句,错一句,现在根据这四个人的描述猜一下五名运动员各获得了什么项目的冠军?
现在来分析这个问题,五个运动员获得5个冠军,正确的结果需要5个描述 即可,现在题目给出了四个人的8个描述,其中一些是相互矛盾的错误描述,因此需要对这些描述的正确 性进行假设,假设的过程其实就是穷举的过程。每个人有两个描述,分别对其进行正确性假设可以得到两 个假设结果,四个人就有24=16种假设结果的组合,下表就是这16种假设结果组合的全部描述:
时间: 2024-09-30 09:54:46