穷举思想

穷举法就是针对问题可能出现的结果,对其逐个进行测验并得出是否为符合要求的结果,穷举法也是许多高级算法中的某个部分。有点像高中数学里面的对问题进行分类讨论的过程中,寻找所有的情况的异曲同工之处。

两部分组成

  1. 系统化地枚举问题各种可能的候选解
  2. 检查验证每一个候选解是否满足问题的求解要求

    穷举的抽象算法伪代码

    image.png

    百元买百兔问题

    image.png

    洗牌问题

    image.png

    问题思路

  • 在1~n-1当中随机选择一个数k1,将其与第n个数互换;
  • 在1~n-2当中随机选择一个属k2,将其与第n-1个数互换;
  • 在第i轮之后,1~n-(i-1)当中选择一个数ki,将其与第n-(i-1)个数互换;

    代码思路

  • 在区间之间随机数的生成

  • 交换函数
  • 泛型:支持各种类型数据的“洗牌”