核心思想:一一列举、逐一检验(暴力)-叠for循环
顺序枚举:
类型:
- k个数相加的最大/最小值
- 差值最小/最大
扫描线算法:模拟一根线去扫描(左到右/上到下),一般标记两个点就够了。
//目前还没有做到用扫描线的题目
通常使用回溯、dfs解决问题-----要牢记dfs的格式,不要忘了要删去原来的值
暴力
二分枚举(二分查找/二分法)
类型:
- 在一堆数据中找出最适合的值
- 找最大的最小值/最小的最大值----二分答案
确定左指针和右指针的起始位置以及循环结束的条件----(是否要加等号,ll是否需要+1等)
一定要有序数列
全排列
next_permutation(start,end)当前排列的下一个排列
prev_permutation(start,end)当前排列的上一个排列
“上一个”和“下一个”,我们可以把它理解为序列的字典序的前后,严格来讲,就是对于当前序列pn,他的下一个序列pn+1满足:不存在另外的序列pm,使pn<pm<pn+1.