全排列
素数环问题:
- 从2开始,因为是一个环所以要固定一个
- b是记录所有的素数(可以使用
bool pri[]
或者在b中线性查找或者二分查找) init()
中需要把1到20装填进去- 在具体全排列中需要剪枝
4.1分支限界法
与回溯法区别
- 回溯法:深度优先搜索,搜索所有的解。
- 分支限界法:广度优先搜索,搜索一个解或者是最优解。
思路的八股文表述
在搜索树中,每一个活节点仅仅有一次机会成为拓展节点,并且一口气生成所有的孩子。
同时舍弃一些不好的孩子。
所用的数据结构:
-
队列式分支限界法
queue -
优先队列式分支限界法
priority_queue
(可以写原生态的堆,使用STL,或者直接无脑线性查找)
如果采用回溯法,如果找到一个路就输出,那么就不一定是最优的。
要找到最优的解,必须全部遍历一遍,所以不太优秀。
如果采用分支限界法,由于是一层一层搜索,所以一定是最优解