zoukankan      html  css  js  c++  java
  • 【读书笔记】《王道论坛计算机考研机试指南》 第六、七章

    先分享一下《2013年王道论坛计算机考研机试指南》pdf
    链接:https://pan.baidu.com/s/1w_nfGVtU40pZrUggAYfQDA
    提取码:aaaa

    第六章 查找

    主要讲了广度优先搜索(BFS),深度优先搜索(DFS)在非图题中的应用,以及递归在查找中的应用,题目都很经典

    查找思路

    1.首先考虑枚举是否可行,即必须保证其时间复杂度在题目时限可以接受的范围内,然后再寻找其他方法;
    2.查找要素(虽然看起来很理论,但是对于复杂的问题慢慢分析还挺有用,不然不知道怎么开始):

    1. 查找空间,即所有满足题目条件的状态解。如果是枚举,则一个一个验证这些状态是否成立;
    2. 查找目标,即找到一组符合问题要求的解,即枚举过程中的验证条件;
    3. 查找方式,寻找合适的方法

    例题:胜利大逃亡 BFS应用的例子



    广度优先搜索(BFS)

    (虽然也是很理论性的东西……但还是先记录一下,因为这一部分真的经常想错……

    1. 状态。确定求解问题的状态,通过状态的转移扩展,查找遍历所有的状态,从而寻找答案;
    2. 状态扩展方式。在广度优先搜索中,尽可能扩展状态,先扩展优先的出的状态(队列先进先出);
    3. 有效状态。只有有效的状态才进行扩展,无效状态直接舍弃,也避免了后面的无效搜索;
    4. 标记。标记状态是否有效!
    5. 有效状态数。有效的状态数即与算法的时间复杂度同数量级,用来估算是否在可接收范围内;
    6. 最优。有时搜索可能要求输出最优方案,搜索的过程也恰好按照某个关键字递增。所以此类问题可考虑BFS。

    深度优先搜索(DFS)

    1. 搜索空间和查找目的与BFS相同;
    2. 深度优先搜索对状态的查找采用了立即扩展新得到的状态方法,因此,DFS搜索得来的解不具有最优解得特性(无法与其他比较),所以通常应用于解存在性判断。


    第七章 动态规划

    看着看着突然意识到一个问题【手动微信捂脸笑表情】,看的时候因为知道正处于哪个章节所以,例如,现在看的例题就直接想用动态规划怎么做……然鹅等考试的时候,怎么能思考到题该用啥法,脑阔疼Σ( ° △ °|||)︴

    动态规划可能的题目:

    1.计数
    a. 有多少种方式走到目的地
    b. 有多少种方法选出k个数使和为sum

    2.求最大值/最小值
    a. 从左上角走到右下角路径最大数字和
    b. 最长上升子序列

    3.求存在性
    a. 取石子,先手是否必胜
    b. 能不能选出k个数使得和sum


    ### 最值型动态规划: 1. **确定状态**最后一步是什么状态,转化成子问题 2. **转移方程** 3. **初始条件和边界情况** 4. **计算顺序**,消除冗余,简便计算
    讲了错排例题:**公式:** `f[n]=(n-1)(f[n-1]+f[n-2])` ,本来没看太懂,这个博主讲的太明白了!!推荐看这个解释:[错排公式推导点这里](https://blog.csdn.net/bengshakalakaka/article/details/83420150)
  • 相关阅读:
    Git 常用命令汇总
    Vue 双向绑定原理
    移动端开发调试总结
    GPU硬件加速
    对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性
    页面跳转
    引用对象深度赋值
    grunt、Browsersync服务及weinre远程调试
    Promise
    数据库Job定时任务
  • 原文地址:https://www.cnblogs.com/wwj321/p/12404395.html
Copyright © 2011-2022 走看看