算法
文章平均质量分 82
bugmaker.
这个作者很懒,什么都没留下…
展开
-
0-1背包的四种解法
有句老话说得好,学会了0-1背包就学会了算法。本篇博客就来盘点一下0-1背包的4中常见解法。动态规划法既然要用动态规划法解0-1背包问题,就要能满足动态规划的两个特性:具有重叠子问题。具有最优子结构性。这两点应该很容易就可以看出,这里就不做过多赘述了。直接来看关键,之前说过,动态规划的本质就是填表,而解动态规划问题的关键是找出动态转移方程,一旦找出动态转移方程,就可以用方程把整个表都填满了。这里直接给出动态转移方程V(i, j)表示在前i(1≤i≤n)个物品中能够装入容量为j(1≤j≤C原创 2021-11-27 22:11:26 · 14002 阅读 · 3 评论 -
常见排序算法的实现
常见排序算法发时间复杂度插入排序法直接插入基本思想:假设第一个元素已经排好,从第二个元素开始,依此与前面的比较,如果比前面的小,就继续向前比较。直到遇见比前面一个元素大的情况,将元素放置在该位置。从第三个元素开始,继续上述步骤。public static void insertSort(int [] nums){ for(int i = 1; i < nums.length; i++){ int temp = nums[i]; in原创 2020-04-13 20:53:38 · 153 阅读 · 0 评论 -
算法笔记6——分支限界
分支限界法与回溯法的不同:(1)求解目标:回溯法是找出解空间树中满足约束条件的所有解分支限界法是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。(2)搜索方式:回溯法以深度优先的方式搜索解空间树分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。分支限界的基本思想:分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。此后,从活...原创 2020-01-10 18:27:21 · 5088 阅读 · 1 评论 -
算法笔记1-----算法概述
一、算法与程序1、算法的四个特性(1)输入(2)输出(3)确定性(4)有限性2、算法和程序的区别(1)程序可以不满足“有限性”,如:操作系统(2)程序是被某种编程语言实现的,而算法独立于任何编程语言,和编程语言无关。二、算法复杂性分析logn<n<nlogn<n^2(多项式时间)当n趋近于正无穷时,nlogn是计算机运算的极限。2^n < n !n...原创 2020-01-10 18:26:20 · 1151 阅读 · 0 评论 -
算法笔记4——贪心算法
一、要点贪心算法的基本要素1、贪心选择性质整体最优解是一系列局部最优解的选择,同时也是贪心与动态规划最主要的区别。贪心自上而下解决问题,动态规划自下而上解决问题。动态规划要求解所有子问题,而贪心只需要局部最优解。2、最优子结构性当一个问题的最优解包含其子问题的最优解时,我们称问题具有最优子结构性。3、只有一个FOR循环二、问题1、活动安排问题//s[]存开始时间,e[]存结束...原创 2020-01-10 18:26:59 · 258 阅读 · 0 评论 -
算法笔记——3动态规划
动态规划动态规划自下而上解决问题,每个子问题都必须求解。动态规划的两个特性:1、子问题不相互独立。2、具有最优子结构性。典型问题:1、矩阵连乘2、最长公共子序列3、图像压缩4、流水作业调度5、0-1背包...原创 2020-01-10 18:26:47 · 1290 阅读 · 0 评论 -
算法笔记5-----回溯法
回溯的概念:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法(深度优先),按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以...原创 2020-01-10 18:27:10 · 986 阅读 · 0 评论 -
算法笔记2——递归分治
递归的概念:直接或间接地调用自己的算法称为递归算法。分治的基本思想分治的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解递归分治的四个特性:1、问题缩小到一定程度可以直接求解2、原问题可分解为多个规模较小的子问题3、子问题的解合并成为原问题的解4、子问题相互独立典型问题1、大整...原创 2020-01-10 18:26:26 · 494 阅读 · 0 评论