枚举,时间回溯和深搜

    前情提要:这是我来福州的第一天,自然是兴奋得不得了,我发现这里的老师讲课虽然快了一点,但还是很详细的。晚上回到宾馆,网卡的不要不要的,我整个人都快哭了。。。老师还说为他得到的我们的情况是我们全是省一省二附近。。。。。。能有这水平的好像都去了提高组,(无力吐槽)我们连复赛都没进

                                                                     

 

                                        枚举法

    

枚举法,本质上就是搜索算法。

  • 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素。
  • 用题目中给定的检验条件判定哪些是无用的,哪些是有用的。能使命题成立。即为其解。
  • 优点:算法简单,在局部地方使用枚举法,效果十分的好
  • 缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢。

    例题 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点的方法。

你可能感兴趣的:(算法分析)