数据结构和算法
文章平均质量分 68
kejie1235
这个作者很懒,什么都没留下…
展开
-
优先队列详解
优先级队列区别于普通队列的一点是:优先级队列如果插入的节点是结构体类型,则要在结构体中重载比较操作符函数。示例代码如下:[cpp] view plaincopy//优先级队列的使用测试 //优先级队列跟对列的使用方式的区别是优先级队列在插入元素时 //在将元素插入队尾后还要根据比较值对该元素进行位置的调整 #include转载 2012-10-18 14:27:09 · 996 阅读 · 0 评论 -
42. Trapping Rain Water
https://leetcode.com/problems/trapping-rain-water/1. 首先我们遍历数组,找到数组中的最高点2. 然后我们分两次遍历,从左到最高点,从右到最高点3. cur 代表左边最高点,如果右边比它小,那么可以剩水。如果右边比它大,那么更新cur的值。4. 如3所示,不过是从右边开始遍历。~~~~~~ 感谢大神能够提供如此简单易懂的解法原创 2016-08-08 09:50:16 · 289 阅读 · 0 评论 -
动态规划之johnson流水线调度
双机流水作业调度问题的Johnson算法n个作业要在由两台机器M1和M2组成的流水线上完成加工. 每个作业i必须先在M1上然后在M2上加工, 时间分别为ai和bi确定这n个作业的加工顺序, 使得从第一个任务开始在M1上加工到最后一个任务在M2上加工完成的总时间尽量小.流水线作业调度问题要求确定这n个作业的最佳加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在M2加工完原创 2012-11-19 16:50:54 · 2598 阅读 · 0 评论 -
贪心算法之最小生成树prim与单源最短路径dijkstra
相信很多数据结构书上都讲了两种有关“最小生成树”的算法求解,两种都是基于贪心算法。其中prim算法是适合于稠密图,他的基本思想是从一个节点开始,沿着它的边寻找最短路径的边,并将其并入到开始节点中去,然后再次从开始节点以及刚刚并入的节点的边中寻找”最短路径“并入其中,然后依次循环。。。。其中的原理很简单,很多数据结构的书上都讲过,但是其中的代码对于初学者还是比较困难的(比如我),我再网上找了很多原创 2012-11-04 14:24:50 · 4265 阅读 · 1 评论 -
背包问题之0/1背包,完全背包,多重背包,混合背包
P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1转载 2012-12-01 10:33:24 · 1056 阅读 · 0 评论 -
杭电2602
#include #include using namespace std;int dp[1002][1002];int p[1024];int w[1024];int main(){ int n,v; int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&v); for(int i=1; i<=n; i+原创 2012-11-28 19:36:25 · 1064 阅读 · 0 评论 -
递归算法之全排列
全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。现以{1, 2, 3, 4, 5}为例说明如何编写全排列的递归算法。 1、首先看最后两个数4, 5。 它们的全排列为4 5和5 4, 即以4开头的5的全排列和以5开头的4的全排列。由于一个数的全排列就是其本身,从而得到以上结果。 2、再看后三个数3, 4, 5。它们的全排列为3 4 5、3 5 4、 4 3原创 2012-11-09 15:33:55 · 795 阅读 · 0 评论 -
递归与分治之棋盘覆盖
《计算机算法设计与分析》第三版递归与分治章节中有一类棋盘覆盖问题。在一个2^k * 2^k个方格组成的棋盘中,若恰好有一个方格与其他方格不同,则称该方格为一个特殊方格,显然在特殊方格在棋盘上出现的为止有4^k种情形。因而对任何k>=0,有4^k种不同的特殊棋盘。 有上图四种不同原创 2012-11-08 11:01:40 · 756 阅读 · 0 评论 -
递归与分治之整数划分
《计算机算法设计与分析》第三版递归与分治章节 有一个整数划分问题。将正整数n表示成一系列正整数值和: n = n1+n2+....+nk。正整数n的这种表示称为正整数的n的划分。正整数n的不同的划分个数称为正整数的n的划分数,将最大加数记作m,记作p(n,m)。例如:6; a5+1; b原创 2012-11-07 21:24:20 · 727 阅读 · 0 评论 -
贪心算法之最小生成树Kruskal
求最小生成树有两种算法prim和kruskal。 前者适合于稠密图,它是根据节点到周围节点的最短路径来求的的。前面已经介绍过,本人也认为它编程思想比较简单适合于初学者。而kruskal根据边数来求的的,它始终取当前最小边加入,所以它适合于稀疏图,当边数非常多时,它就会很复杂。很多数据结构书上都讲过这种贪心思想,这种思想还好理解,但是要将它具体写成程序还是有一些难度的,我想按照prim算法的思想原创 2012-11-07 16:48:00 · 838 阅读 · 0 评论 -
153. Find Minimum in Rotated Sorted Array QuestionEditorial Solution
Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).Find the minimum element.You may assume no duplicate exists in原创 2016-08-09 14:33:26 · 290 阅读 · 0 评论