算法学习
TripleGold.
这个作者很懒,什么都没留下…
展开
-
分治法算法学习(一)——归并排序、求最大子数组和
最近在学习算法,看了MOOC上北航童咏昕老师的课后收获很多,这篇文章算是我的学习笔记。什么是分治法?这个问题其实很好回答,就是将一个大问题拆解成很多个小问题,依次解决每个小问题,最后整理结果合并为大问题的答案,兵法中这叫逐个击破。哪些时候适合用分治法?以分治法的三个步骤为思路,首先这个问题要能被拆解,这点大部分问题都满足,因为问题的复杂性往往和问题的规模正相关。其次是能被拆解为若干个相同的子问题,即具有最优子结构性质。最后也是分治法最关键的特点,即每个子问题的解最终能合并为大问题的解。分治法框架原创 2020-12-24 23:39:46 · 1161 阅读 · 1 评论 -
(新手向)递归与回溯算法学习(一)——n位逐位整除数
前言什么是递归?什么是回溯?它们有什么关系?简单来说,递归是一种算法的结构,它表现为函数间接或直接地调用自己。而回溯是一种算法思想,它可以用递归这种算法结构来实现。回溯法类似与穷举法,与之不同的是回溯法中有“剪枝”操作,可以将它理解为优化后的穷举。为什么难写?对于大多数刚学习算法的同学来说,涉及到递归、回溯的代码常常令我们感到害怕。造成这种恐惧心理的原因主要有以下几点:不知道回溯法代码长什么样。递归控制不好,容易写死循环。递归代码不好调试,靠“人脑调试”比较困难。可以发现这几个原因是紧密相原创 2020-12-20 11:04:15 · 1997 阅读 · 3 评论