10 2019 档案
动态规划 01背包问题
摘要:0-1背包 Description 给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能 阅读全文
posted @ 2019-10-31 11:53 likeghee 阅读(470) 评论(0) 推荐(0)
最长公共子序列动态规划方程
摘要:动态规划的一个计算两个序列的最长公共子序列的方法如下: [1] 以两个序列 X、Y 为例子: 设有二维数组f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度, 则有: f[1][1] = same(1,1); f[i,j] = max{f[i-1][j -1] + sam 阅读全文
posted @ 2019-10-31 10:32 likeghee 阅读(300) 评论(0) 推荐(0)
分治法题目整理分析 找第k小的数/求逆序对数目/派
摘要:设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[left])对a[left]~a[right]进 阅读全文
posted @ 2019-10-28 22:59 likeghee 阅读(1207) 评论(0) 推荐(1)
动态规划题四类题型杂七杂八合计分析②(只分析状态转移方程,AC代码自行百度)(待更先睡了) 炮兵布阵/二分查找树/聚会的欢乐/01背包/分组背包/挤牛奶
摘要:炮兵布阵 问题描述 司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用”H” 表示),也可能是平原(用”P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区 阅读全文
posted @ 2019-10-28 00:30 likeghee 阅读(194) 评论(0) 推荐(0)
动态规划题四类题型杂七杂八合计分析(只分析状态转移方程,AC代码自行百度) 挖地雷/合唱队形/山区建学校/剑客决斗/石子合并/加分二叉树/统计单词个数
摘要:这题突破口在题目设置 “并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖” ,那么最大的那个地窖不指向任何地窖,则可以固定最大号的那个地窖的d,从大往小递推。 设d[i]为从i号地窖开始挖最大的地雷数,默认值为a[i] 令a[i] 为第i号地窖的地雷数 递归方程 : d[i] = max { 阅读全文
posted @ 2019-10-27 16:50 likeghee 阅读(377) 评论(0) 推荐(1)
第三章动态规划小结
摘要:1. 你对动态规划算法的理解(2分) 我对动态规划的理解是: 当前问题能根据之前的求解过的问题进行求解,或者是,一个问题的解依赖于若干个以前的求解过的子问题。 与分治的区别是,分治将问题分成若干子问题进行处理后合并,问题与问题间没有像动态规划那样有很强的依赖关系,分治法更多的是独立求解再合并的思想; 阅读全文
posted @ 2019-10-26 18:12 likeghee 阅读(166) 评论(0) 推荐(0)
算法第三章上机实践报告,编辑距离问题
摘要:实践报告任选一题进行分析。内容包括: 1.实践题目 7-3 编辑距离问题 (30 分) 2.问题描述 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的 阅读全文
posted @ 2019-10-17 23:25 likeghee 阅读(359) 评论(0) 推荐(0)
第二章算法总结
摘要:递归的概念:直接或者间接地调用自身的算法称为递归算法。 递归让一些复杂的问题变得简单易懂易于分析,如汉诺塔问题和Ackerman函数,在排序快排算法和归并排序算法中也有递归的运用。 汉诺塔: ackerman函数: 递归的缺点:需要不断开拓堆栈空间,占用空间大,可能导致内存溢出,并且运行效率低,不能 阅读全文
posted @ 2019-10-13 17:52 likeghee 阅读(177) 评论(1) 推荐(0)