Talk is cheap,show me the code!
随笔分类 - 数据结构与算法
摘要:
Dijkstra 最短路径问题 : 给定一个带权有向图 G = (V, E, W),同时给定一个源点 u (u ∈ V),我们要找出从源点 u 出发到其它各点的最短路径距离,并得出这些最短路径的具体路径有哪些边构成。 其实我们要求的就是从 源点 u 出发到 其它各点 str的最短路径所组成的路线网络
阅读全文

摘要:
两道回溯法的例题 1.重写0-1背包问题的回溯法,使算法能输出最优解 [算法描述] 0-1背包问题是子集选取问题。一般情况下,0-1背包问题是NP完全问题。0-1背包问题的解空间可以用子集树表示。解0-1背包问题的回溯法与解装载问题的回溯法十分相似。在搜索解空间树时,只要其左儿子节点是一个可行的节点
阅读全文

摘要:
回溯法 回溯法是最常用的解题方法,有“通用的解题法”之称。当要解决的问题有若干可行解时,则可以在包含问题所有解的空间树中,按深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的搜索,继续查找该结
阅读全文

摘要:
题目 有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 思路 具有最优子结构性质和贪心选择性质。只要是所有物品的总重量大于背包容纳量,那么背包一定能装满。注意背包问题与0-1背包问题的区别。 这2类问题都具有最优子结构
阅读全文
![[转]背包问题的贪心求解](https://img2022.cnblogs.com/blog/2991895/202211/2991895-20221122110805802-600805615.png)
摘要:
硬币问题 问题描述:设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。 对任意钱数0≦m≦20001,设计一个用最少硬币找钱m的方法。 算法设计:对于给定的1≦n≦10,硬币面值数组T和可用使用的各种面
阅读全文

摘要:
动态规划(Dynamic Programming) 它是计算机中解决最优化问题的一种方法,效率高,速度快。 一般思路: 1、穷举法/暴力搜索 2、记忆化搜索/剪枝 3、改写成迭代形式 思想 1.动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题 2.但是经分解得到的子问题往往不是
阅读全文

摘要:
1.递归的基本思想 (1)何为递归? 递归顾名思义就是´递´和´归´ 所谓的‘递’也就是“向下递去”,这个问题可以分解为若干个且形式相同的子问题,这些子问题可以使用相同的思路来解决。 所谓的‘归’也就是“归来的意思”,什么时候归来?所以涉及到了临界点,也就是‘递’中的分解终止条件。 递归的工作原理?
阅读全文

摘要:
分治的理解 把规模为n的问题P(n),分解为k个规模较小、互相独立、结构与原来问题结构相同的子问题,又进一步的分解每个子问题,直到某个阀值n0为止。递归地解这些子问题,再把子问题的解合并起来,得到原问题的解。 divide-and-conquer(P) { if ( | P | <= n0) adh
阅读全文

摘要:
汉诺塔问题 在经典汉诺塔问题中,有 3 根柱子及 n 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动一个盘子; (2) 盘子只能从柱子顶端滑出移到下一根柱子; (
阅读全文

摘要:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1] 输
阅读全文

摘要:
1.冒泡排序(Bubble Sort) | 第0轮 | 3 | 1 | 4 | 1 | 5 | 9 | 2 | 6 | 5 | 3 | 5 | 8 | 9 | | | | | | | | | | | | | | | | | 第1轮 | 1 | 3 | 1 | 4 | 5 | 2 | 6 | 5 |
阅读全文
