本页面将简要介绍枚举算法。

简介

枚举(英语:Enumerate)是基于已有知识来猜测答案的一种问题求解策略。

枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立。

要点

给出解空间

建立简洁的数学模型。

枚举的时候要想清楚:可能的情况是什么?要枚举哪些要素?

减少枚举的空间

枚举的范围是什么?是所有的内容都需要枚举吗?

在用枚举法解决问题的时候,一定要想清楚这两件事,否则会带来不必要的时间开销。

选择合适的枚举顺序

根据题目判断。比如例题中要求的是最大的符合条件的素数,那自然是从大到小枚举比较合适。

例题

以下是一个使用枚举解题与优化枚举范围的例子。

复杂度分析

  • 时间复杂度分析:对 数组遍历了一遍就能完成题目要求,当 足够大的时候时间复杂度为
  • 空间复杂度分析:

习题

脚注

Footnotes

  1. 桶排序 以及 主元素问题 以及 Stack Overflow 上对桶数据结构的讲解(英文)

此文件夹下有0条笔记。