学习总结2.19
首先就是对dfs和bfs的熟悉,dfs是一种递归函数,通过不断深搜来达到目的,通常用于寻找多少未知量,相较于bfs,编译难度更低一点;bfs多用于寻找最短路径之类,相较于dfs代码多了一部分队列的代码,在编译难度上也相较更大,如判断队列是否有元素后弹出队尾元素处理后入队
栈和队列的代码比较类似,栈需要顶部指针,出入栈,判断栈是否为空等函数,队列需要头部尾部指针,结构化,出入队等函数,通常队列代码多与其他函数一起使用(有时候用循环和重置也可以替代队列,如约瑟夫环)
并查集与二叉树基于祖先节点与叶子节点来思考,通过父与子节点的关系来将问题串在一起,并查集核心由寻找父节点的函数,初始化所有节点的父节点与将当前节点与其他节点连接三部分组成,二叉树则可以灵活与其他函数结合,比如后缀表达式和医院设置,有很强的拓展性
动态背包中的01背包,完全背包将超时的多重循环变成更为省时的二维表或者动态一维数组,大大提升了处理大规模数据的效率,从而计算出需要的结果
一个寒假的时间让我看到了算法背后无穷的生机,我目前了解的这些还只是冰山一角,每个题目后是算法与逻辑的结合,需要将问题抽丝剥茧,逐一分析。现在的学习只是一个开始,在算法优化方面还需学习更多高效的技巧,在动态规划中还需提高对复杂问题的建模能力。同时不断的巩固算法也是极其重要的,在解决新问题的时候,也不能忘记温故而知新的道理,否则也只是竹篮打水一场空。
这个寒假也可以说是打开了编程世界的大门,增添了对编程的热情,也算是为后续的学习进行铺垫,拓宽更广阔的编程视野