随笔分类 -  算法

摘要:题目 假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序, 您希望将之分类,并排列为蓝、白、红的顺序,注意您只能在绳子上进行调换动作, 而且一次只能调换两个旗子。蓝、白、红分别用1、2、3表示, 比如输入是[1,2,3,1,2,3,1,2,3],排序完结果为[1,1,1, 阅读全文
posted @ 2021-04-04 18:53 狼爷 阅读(231) 评论(0) 推荐(0) 编辑
摘要:有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。状态转换方程:“f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}” 阅读全文
posted @ 2021-02-14 02:53 狼爷 阅读(227) 评论(0) 推荐(1) 编辑
摘要:分治算法(Divide And Conquer)是解决规模庞大的问题的很好的思路,它通过降低问题的规模,形成若干个规模更小但形式相同的子问题,进行递归求解。在求解过后,将各个子问题的解合并起来,形成原问题的解。大致流程主要分成三步:分解(Divide);解决(Conquer);合并(Merge)。最后,我们再通过一个具体的例子进行分析。 阅读全文
posted @ 2021-02-13 20:49 狼爷 阅读(605) 评论(0) 推荐(0) 编辑
摘要:所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。遍历方式分别为:先序遍历、中序遍历、后序遍历。二叉树前序遍历:根-> 左-> 右;二叉树中序遍历:左-> 根-> 右;二叉树后序遍历:左-> 右-> 根 阅读全文
posted @ 2021-02-01 00:23 狼爷 阅读(101) 评论(0) 推荐(0) 编辑
摘要:回溯算法本质就是枚举,在给定的枚举集合中不断从其中尝试搜索找到问题的解,如果在搜索过程中发现不满足求解条件,则回溯返回,尝试其他路径继续搜索解决,这种走不通就回退再尝试其他路径的方法就是回溯法。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考3个问题:1. 路径;2. 选择列表:3. 结束条件。回溯算法解决全排列问题。 阅读全文
posted @ 2021-01-01 16:13 狼爷 阅读(332) 评论(0) 推荐(1) 编辑
摘要:动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。整体框架:状态转移方程、备忘录存储重复子问题、最小子问题、求最值。斐波那契数列不算动态规划,但是解决问题的思路与动态规划很像,再加上大家上学的时候基本都接触过斐波那契数列,通过它来理解动态规划就很不错了。 阅读全文
posted @ 2020-12-13 23:15 狼爷 阅读(636) 评论(2) 推荐(2) 编辑
摘要:滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。 阅读全文
posted @ 2020-12-12 17:26 狼爷 阅读(1349) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示