前情提要:这是我来福州的第一天,自然是兴奋得不得了,我发现这里的老师讲课虽然快了一点,但还是很详细的。晚上回到宾馆,网卡的不要不要的,我整个人都快哭了。。。老师还说为他得到的我们的情况是我们全是省一省二附近。。。。。。能有这水平的好像都去了提高组,(无力吐槽)我们连复赛都没进
枚举法
枚举法,本质上就是搜索算法。
- 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素。
- 用题目中给定的检验条件判定哪些是无用的,哪些是有用的。能使命题成立。即为其解。
- 优点:算法简单,在局部地方使用枚举法,效果十分的好
- 缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢。
例题 1:
AB*A=CCC 求其所有的可能性。
解法:
枚举所有的A和B,两重循环1-9加判断,81次运行即可完成。如果还要优化枚举A的循环可以从3开始。
拓展一下:AA*AB=CCBB且A*B=CD。
时间回溯
回溯法,又称试探法。一般需要遍历解空间,时间复杂度概况:子集树Ω(2^n),排序树Ω(n!),暴力法。
递归回溯是搜索的实现方式之一,这与dfs和bfs有一定关系,这个说简单点就是进去出来顺便组个答案。
例题:
全排列,n个数输出从1到n的n!个全排列。
解法:
利用递归和回溯从1到n逐次寻找方法即排列方式。
DFS
学名:深度优先搜索。
用途:1.通过遍历所有路径,来判断两点之间是否连通。(最常用)
2.因为要走遍所有可能路径,所以也可以记录 能够到达的 位置 的个数。
特点:一搜到底。即走遍所有可能的路径。
难点:如何将题目抽象成一张
例题:
给出4个1到13的数,计算24点。
解法:
进行dfs,找能达到24点的方法。