算法
epsilon_2048
这个作者很懒,什么都没留下…
展开
-
最优装载
Description有一批集装箱要装上一艘载重量为C的轮船。其中集装箱i的重量为wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。Input输入的第一个为测试样例的个数T,接下来有T个测试样例。每个测试样例的第一行是一个非负整数n( n ≤ 1000 )和一个非负整数C( C ≤ 10000 ),分别表示集装箱的个数以及轮船的载重量。接下来有n行,每行...原创 2018-09-23 21:18:46 · 638 阅读 · 0 评论 -
算法设计例题:n后问题(回溯、分枝限界)
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。 分析:把二维数组分为n层n列,层层搜索,每当找到位置,就把该位置的行列及斜线位置设为不可达(+1操作,值为零时该位置可达。)搜索下一层。如果能到达最底层,则找到一种摆法。我以...原创 2018-11-08 20:46:28 · 1873 阅读 · 0 评论 -
转:五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
转:https://blog.csdn.net/lengye7/article/details/81628345分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,...转载 2018-11-08 14:55:01 · 256 阅读 · 0 评论 -
算法设计例题:批处理作业调度(回溯)
给定n个作业的集合 J = { J1,J2,…,Jn }。每一个作业Ji都有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j 的处理时间为tji,其实 i=1, 2, …, n,j=1, 2。对于一个确定的作业调度,设Fji是 作业i 在 机器j 上完成处理的时间。所有作业在机器2上完成处理的时间之和称为该作业调度的完成时间和。批处理作业调度问题要求对...原创 2018-11-07 19:24:29 · 2399 阅读 · 0 评论 -
算法设计例题:装载问题(回溯、分枝限界)
有一批概共n个集装箱要装上两艘载重量分别为c1和c2的轮船,其中,集装箱i的重量为wi,且。装载问题要求确定是否有一个合理的装载方案可将这n个集装箱装上这两艘轮船。 容易证明,如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案:1. 首先将第一艘轮船尽可能装满;2. 将剩余的集装箱装上第二艘轮船 用深搜可以很容易解决,主要是剪枝,当当前所累加的重量大于船重量时,这...原创 2018-11-06 21:04:38 · 4765 阅读 · 0 评论 -
多机调度问题
设有n个独立的作业{1,2,…,n},由m台相同的机器进行加工处理。作业i所需的处理时间为ti。现约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。现要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。NP难问题。想法:尽可能的使每个机器的工作时间趋向一致,所以用最长时间的作业去填当前工作时间最短的机器(即...原创 2018-09-28 19:48:11 · 2423 阅读 · 0 评论 -
活动安排问题
设有n个活动的集合E={1, 2, ..., n},其中,每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i 都有一个要求使用该资源的起始时间 si 和一个结束时间 fi ,且si < fi。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当 ...原创 2018-09-28 10:15:45 · 943 阅读 · 0 评论 -
矩阵快速幂
其实矩阵快速幂类同与求快速幂,用二分法。矩阵(方阵) A^n = A^(n/2) * A^(n/2) = A^(n/4) * A^(n/4) * A^(n/4) * A^(n/4) = ..... = A^(n/n)*...*A^(n/n);关键代码while(n){ if(n&1) ans *= a; n>>=1; a...原创 2018-09-27 20:43:55 · 117 阅读 · 0 评论 -
线性时间选择
Description给定线性序集中n个元素和一个整数k,1 ≤ k ≤ n,请找出这n个元素中第k小的元素快速选择的变种。当position = k 时,array[position]为第k小。当position < k 时, 第k小在右半部分,即 [position+1,right]。当position > k 时, 第k小在左半部分,即[left,positi...原创 2018-09-25 22:14:15 · 172 阅读 · 0 评论 -
棋盘覆盖
在一个2k × 2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的棋盘上除特殊方格以外的所有方格,L型骨牌不能旋转,且任何两个L型骨牌不得重叠覆盖。棋盘和标记为红色的特殊方格 4种L型骨牌 可以用分治法解决当方...原创 2018-09-24 13:15:51 · 154 阅读 · 0 评论 -
二叉树线索化
通过三种遍历方式(先序、中序、后序)将其线索化。遵循的原则:若无左子树,令lchild指向其前驱结点,若无右子树,令rchild指向其后继结点。因此需增设两个标志:ltag、rtag含义如下:ltag = 0 ,则lchild域指向结点的左孩子, ltag = 1, 则lchild域指向结点的前驱 rtag = 0, 则rchild域指向结点的右孩...原创 2019-03-02 23:15:51 · 150 阅读 · 0 评论