摘要:
将数组A划分为两个数组A1和A2 ,各含有A的一半元素或一半多一个.若A中含有主元素x,则A1和A2中至少有一个数组含有主元素x,对A1和A2递归地计算有无主元素,若A只含有一个元素,则A的主元素就是这个元素,否则计算出A1和A2的主元素x1和x2: 若x1和x2都不存在,则A不存在主元素 若x1和 阅读全文
posted @ 2017-12-05 20:51
清风☆薰衣草
阅读(397)
评论(0)
推荐(0)
摘要:
先比较数组的A[0]元素,若不相等接下来比较A[1],A[2],A[4],A[8]…,若找到一个区间A[2n-1]<x<A[2n],再对这个区间进行折半查找操作。总的时间为O(logn)。 若查找过程中A[i]中的i>n,则抛出异常 1 package org.xiu68.ch02.ex2; 2 3 阅读全文
posted @ 2017-12-05 20:49
清风☆薰衣草
阅读(331)
评论(0)
推荐(0)
摘要:
首先利用归并排序算法对数组进行排序,时间复杂度为O(nlogn),接着再利用时间复杂度为O(n) 的去重复算法去掉数组中的重复元素。总的时间复杂度为O(nlogn)。 (这题应该用分支算法解决)以下为分支算法 代码不是分支算法 1 package org.xiu68.ch02.ex2; 2 3 pu 阅读全文
posted @ 2017-12-05 20:47
清风☆薰衣草
阅读(326)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 20:41
清风☆薰衣草
阅读(456)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 20:38
清风☆薰衣草
阅读(187)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 20:35
清风☆薰衣草
阅读(149)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 20:32
清风☆薰衣草
阅读(154)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 20:25
清风☆薰衣草
阅读(188)
评论(0)
推荐(0)
摘要:
(a) 当n=1时,(10)d=(1010)b 当n=2时,(100)d=(10)d x (10)d=(1010)b x (1010)b 当n=4时,(10000)d=(100)d x (100)d=(1010)b x (1010)b x (1010)b x (1010)b … 因此z=pwr2bi 阅读全文
posted @ 2017-12-05 20:23
清风☆薰衣草
阅读(506)
评论(0)
推荐(0)
摘要:
1 package org.xiu68.ch02; 2 3 public class Ex2_22 { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 //两数组有序,寻找两数组合 阅读全文
posted @ 2017-12-05 20:20
清风☆薰衣草
阅读(187)
评论(0)
推荐(0)
摘要:
假设profit[i]为在前i个位置修建酒店所获得的最大利润,当i=0时,profit[0]=0。当i>0时,若j为上一个满足m[i]-m[j]k的位置。若profit[i-1]>profit[i-1]+pi,说明在前i个位置开酒店所获得的利润小于前j个位置开酒店所获得的利润,否则,前i个位置修建酒 阅读全文
posted @ 2017-12-05 20:15
清风☆薰衣草
阅读(195)
评论(0)
推荐(0)
摘要:
假设n个旅馆距离原点的距离存放在数组arr[0. . .n-1]中,punish[0. . .n-1]表示在某个旅馆停留时所受的的惩罚的最小值。当然在第一个旅馆停留时所受到的惩罚为0,即punish[0]=0。若i>0,则在第i个旅馆停留时所受到的惩罚的最小值符合递推式: 1 package org 阅读全文
posted @ 2017-12-05 20:12
清风☆薰衣草
阅读(437)
评论(0)
推荐(0)
摘要:
设数值列表a0,a1 . . . an存放在数组arr[0. . .n]中. sum[0],sum[1],sum[2] . . . .sum[n]为以该下标为终点元素的连续子序列的和的最大值,则sum[i]=max{sum[i-1]+arr[i],arr[i]} 1 package org.xiu6 阅读全文
posted @ 2017-12-05 20:10
清风☆薰衣草
阅读(251)
评论(0)
推荐(0)
摘要:
假设关键字的总数为n,用c[i,j]表示第i个关键字到第j个关键字的最优二叉查找树的代价,我们的目标是求c[0,n-1]。要求c[i,j],首先要从第i个关键字到第j个关键字中选一个出来作为根结点,选出根结点后,最优二叉搜索树的代价为左子树的代价加上右子树的代价,由于每选出一个根结点,每个关键字的搜 阅读全文
posted @ 2017-12-05 19:58
清风☆薰衣草
阅读(475)
评论(0)
推荐(0)
摘要:
假设顶点的总数为n,从0到n-1. 从序号为0的顶点开始以逆时针方向排序,对于 令子问题A[i,j]为包含顶点i,i+1, . . . j的凸多边形的最小三角剖分代价,dist(i,j)为顶点i到顶点j的距离。对于子问题A[i,j],考虑边e(i,j)最终会在某个三角形内,为了找出这个三角形,计算i 阅读全文
posted @ 2017-12-05 19:52
清风☆薰衣草
阅读(1111)
评论(0)
推荐(0)
摘要:
设字符串的长度为n,整型数组arr[0. . .n-1]的第一个数和最后一个数为开始点与结束点的位置,中间的数为拆分点的位置,设cost[i,j]为第i个分割点到第j个分割点的最小代价,两个分割点之间要有大于等于一个分割点才能把字符串继续拆分,因此j-i>=2; 得到递推式 1 package or 阅读全文
posted @ 2017-12-05 19:50
清风☆薰衣草
阅读(407)
评论(0)
推荐(0)
摘要:
设字符串为s,字符串中字符的个数为n,vi[i]表示前i+1个字符是否能组成有效的单词vi[i]=true表示能组成有效的单词,vi[i]=false表示不能组成有效的单词,在每个字符串前加一个空格,设vi[0]=true.只要有一个j满足vi[j]=true并且s[j+1,n-1]是一个有效的单词 阅读全文
posted @ 2017-12-05 19:47
清风☆薰衣草
阅读(428)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 19:41
清风☆薰衣草
阅读(180)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-12-05 19:39
清风☆薰衣草
阅读(209)
评论(0)
推荐(0)
摘要:
子问题定义: 定义一个二维数组b,其中b[i][j]表示用i个硬币是否能兑换价格j,表示第i个币种的面值, 递归关系: 初值设定: 求解顺序: 按下标从小到大依次求解数组b每一列的值,最后二维数组b的右下角元素值即为最终的解。 1 package org.xiu68.ch06.ex7; 2 3 pu 阅读全文
posted @ 2017-12-05 19:38
清风☆薰衣草
阅读(347)
评论(0)
推荐(0)
摘要:
子问题定义: 定义一个二维数组b,其中b[i][j]表示前i个币种是否能兑换价格j,表示第i个币种的面值,第i个币种的使用有两种情况,若使用,则b[i][j]=b[i-1][j-],若不使用,则b[i][j]=b[i-1][j] 递归关系: 初值设定: 求解顺序: 按下标从小到大依次求解数组b每一行 阅读全文
posted @ 2017-12-05 19:36
清风☆薰衣草
阅读(321)
评论(0)
推荐(0)
摘要:
子问题定义:定义一个数组b,大小比兑换价格的大小多一个元素,其中b[i]表示是否能用面值为x1,x2,x3,..,xn的硬币兑换价格i。 递归关系: 初值设定:设b[0]=true 求解顺序:按下标从小到大依次求解b[i]的值,最后返回b[v]中的结果即为最终结果。 1 package org.xi 阅读全文
posted @ 2017-12-05 19:31
清风☆薰衣草
阅读(475)
评论(0)
推荐(0)
摘要:
即可 子问题定义:定义数组B(S,j),其中 B(S,j)表示在子集S中结束位置为j的子问题的最大收益值,其中j的前一个地点有两种情况,第一种情况是某个拍卖会 另一种情况是从家里出发。 递归关系: 初值设定:B({0},0)=0 求解顺序:按子集S的大小从小到大依次求解,最后找出最大的 即可。 阅读全文
posted @ 2017-12-05 19:28
清风☆薰衣草
阅读(171)
评论(0)
推荐(0)
摘要:
子问题定义: 对于图中的每个结点,有两种状态,即属于最小点覆盖和不属于最小点覆盖,定义minSet[i][0]表示结点i属于点覆盖,并且以i为根的树的最小点覆盖的大小。minSet[i][1]表示点i不属于点覆盖,并且以i为根的树的最小点覆盖的大小。 递归关系: 对于minSet[i][0],i的孩 阅读全文
posted @ 2017-12-05 19:23
清风☆薰衣草
阅读(661)
评论(0)
推荐(1)
摘要:
子问题定义: 定义p[i][j]为布料宽为i,高为j的最优产出,每次剪下一块布料,剩余布料最多形成三块矩阵面料。每次剪裁会有两种情况,水平切割布料,其次是将布料旋转90度后在切割布料。 递归关系: 初值设定: p[0][h]=0 p[w][0]=0 求解顺序: 依次求解二维数组p的每一行,每一列,最 阅读全文
posted @ 2017-12-05 19:19
清风☆薰衣草
阅读(384)
评论(0)
推荐(0)
摘要:
题目貌似有问题 (b) 子问题定义: 设maxValue[i][j]为棋盘的前i行中最后一行为i时第i行按照第j种放置方式放置时得到的最大覆盖值,comp[i][j]为第i种放置方式与第j种放置方式是否相容,value[i][j]为第i行按照第j种放置方式放置时覆盖整数的最大值,如此可以得到递归式。 阅读全文
posted @ 2017-12-05 19:16
清风☆薰衣草
阅读(272)
评论(0)
推荐(0)
摘要:
设第i个客户需要等待的时间为ti,则n个客户需要总的等待时间为 ,因此,要使T最小,则要使 即可,所以,对所有的ti按升序进行排序和服务将得到最小的等待时间。 1 package org.xiu68.ch6.ex8; 2 3 public class Ex5_32 { 4 5 public stat 阅读全文
posted @ 2017-12-05 19:12
清风☆薰衣草
阅读(238)
评论(0)
推荐(0)
摘要:
利用并查集进行处理,定义一个维护数组components,components[i]表示变量序号为i的变量所处的集合,首先处理相等的变量,把它们放入同一个集合中,最后再处理不相等变量,若两个不相等的变量处于同一个集合中,则不满足约束条件。 1 package org.xiu68.ch05.ex9; 阅读全文
posted @ 2017-12-05 19:08
清风☆薰衣草
阅读(255)
评论(0)
推荐(0)
摘要:
(a)设环的顶点集为V, e(u,v)为权最重的边,若把V分成两部分V1,V2。其中V1包含u,V2包含v,因为V是一个环,因此,至少存在两条把u和v连接起来的边。因此,除了e之外,至少还存在另一条边把u和v连接起来,所以必存在某个不包含e的最小生成树。 (b)该算法每次都删除环中权最大的边,由题中 阅读全文
posted @ 2017-12-05 19:06
清风☆薰衣草
阅读(298)
评论(0)
推荐(0)
摘要:
根据题意,求的是最大生成树。利用Kruskal算法,对边进行从大到小的顺序进行排序,然后再依次取出边加入结果集中。假设图有n个顶点,那么,当结果集中有n-1条边时,剩下的边的集合即为反馈边集。 1 package org.xiu68.ch05.ex9; 2 3 import java.util.Ar 阅读全文
posted @ 2017-12-05 19:04
清风☆薰衣草
阅读(964)
评论(0)
推荐(0)
摘要:
对于所有的蕴含式,生成一张有向图,对于每一个蕴含式,将左边的每一个文字连接到一个中间结点,并用中间结点记录蕴含式左边文字的数量,然后将中间结点连接到蕴含式的右侧结点。例如,对于蕴含式集合 生成的有向图如下 然后将所有的文字的设为false,从某一个值为0的中间结点开始做深度优先遍历,将中间结点所连接 阅读全文
posted @ 2017-12-05 19:01
清风☆薰衣草
阅读(425)
评论(0)
推荐(1)
摘要:
根据总人数建立顶点数量为总人数的无向图,顶点之间有边相连表示两个人相互认识,没有边则表示不认识。对于每一个顶点v,设d(v)表示顶点的度,若d(v)<5,即v认识的人数少于5,则不邀请v,若d(v)>总人数-6,即v认识的人数大于(总人数-6)个,即v不认识的人少于5个,这种情况也不邀请v,给定一个 阅读全文
posted @ 2017-12-05 18:59
清风☆薰衣草
阅读(396)
评论(0)
推荐(0)
摘要:
(a)首先对有向无环图进行拓扑排序,再按拓扑排序的逆序依次计算每个顶点的cost值,每个顶点的cost值为自身的price值与相邻顶点间的cost值得最小值 (b)求出图中的每一个强连通分量,并把所有得强连通分量看成是一个有向无环图,设每一个强连通分量的price值为该强连通分量中顶点的最小的pri 阅读全文
posted @ 2017-12-05 18:55
清风☆薰衣草
阅读(289)
评论(0)
推荐(0)
摘要:
(a) Inf(p)在p中出现了无穷多次,说明Inf(p)存在一个环当中,所以这个环的顶点肯定是某一个强连通部件的子集。 (b) 若G中存在一条无穷路径,则G中至少存在一个环,且这个环至少有两个顶点,所以要求的是在G中是否存在一个顶点数目大于等于2的强连通分量 (c) 在(b)的基础上,对所有顶点数 阅读全文
posted @ 2017-12-05 18:53
清风☆薰衣草
阅读(207)
评论(0)
推荐(0)
摘要:
(a) 可以用图中的每一个顶点表示街道中的每个十字路口,由于街道都是单行的,所以图是有向图,若从一个十字路口都有一条合法的路线到另一个十字路口,则图是一个强连通图。即要验证的是图是否是一个强连通图。 (b) 若从市政厅沿着合法路线到达任何一个地方都有合法路线返回则说明市政厅位于一个有向图中的一个汇点 阅读全文
posted @ 2017-12-05 18:51
清风☆薰衣草
阅读(415)
评论(0)
推荐(0)
摘要:
有一个数的序列A[1]、A[2] 、A[3] 、…… 、A[n],若i<j,并且A[i]>A[j],则称A[i]与A[j]构成了一个逆序对,设计算法求数列A中逆序对的个数. 1 package org.xiu68.exp.exp1; 2 3 public class Exp1_3 { 4 publi 阅读全文
posted @ 2017-12-05 18:23
清风☆薰衣草
阅读(260)
评论(0)
推荐(0)
摘要:
1 package org.xiu68.exp.exp1; 2 3 public class Exp1_2 { 4 //实现快速排序算法,采用不同的方法实现线性划分的过程 5 public static void main(String[] args) { 6 int[] arr=new int[] 阅读全文
posted @ 2017-12-05 18:22
清风☆薰衣草
阅读(180)
评论(0)
推荐(0)
摘要:
1 package org.xiu68.exp.exp1; 2 public class Exp1_1 { 3 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 int[] arr=ne 阅读全文
posted @ 2017-12-05 18:21
清风☆薰衣草
阅读(195)
评论(0)
推荐(0)
摘要:
【问题描述】 建立一个从源点S到终点E的有向无环图,设计一个动态规划算法求出从S到E的最短路径值,并输出相应的最短路径。 解: 1 package org.xiu68.exp.exp4; 2 3 import java.util.ArrayDeque; 4 import java.util.Stac 阅读全文
posted @ 2017-12-05 18:11
清风☆薰衣草
阅读(470)
评论(0)
推荐(0)
摘要:
【问题描述】 建立一个从源点S到终点T的多段图,设计一个动态规划算法求出从S到T的最短路径值,并输出相应的最短路径。 解 1 package org.xiu68.exp.exp4; 2 3 public class Exp4_1 { 4 //建立一个从源点S到终点T的多段图,设计一个动态规划算法求出 阅读全文
posted @ 2017-12-05 18:10
清风☆薰衣草
阅读(1189)
评论(0)
推荐(0)
摘要:
【问题描述】 设p1=(x1,y1), p2=(x2,y2), … , pn=(xn,yn) 是平面上n个点构成的集合S,设计和实现找出集合S中距离最近点对的算法。 每一个格子最多只能存在一个点,三行最多存在12个顶点,因此对于上图中的第(i=27)个顶点来说,最多只需要比较第27个顶点与之后的11 阅读全文
posted @ 2017-12-05 18:08
清风☆薰衣草
阅读(581)
评论(0)
推荐(0)
摘要:
假定有k个有序数组,每个数组中含有n个元素,您的任务是将它们合并为单独的一个有序数组,该数组共有kn个元素。设计和实现 一个有效的分治算法解决k-路合并操作问题,并分析时间复杂度。 阅读全文
posted @ 2017-12-05 18:06
清风☆薰衣草
阅读(201)
评论(0)
推荐(0)
摘要:
对于长度为n的整型数组A,随机生成其数组元素值,然后实现一个线性时间的算法,在该数组中查找其中项。 1 package org.xiu68.exp.exp3; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java 阅读全文
posted @ 2017-12-05 18:06
清风☆薰衣草
阅读(194)
评论(0)
推荐(0)
摘要:
【问题描述】 给定一个无向图,设计一个算法,判断该图中是否存在关节点,并划分双连通分量。 1 package org.xiu68.exp.exp9; 2 3 import java.util.Stack; 4 5 public class Exp9_3 { 6 7 //无向图的双连通分量问题 8 p 阅读全文
posted @ 2017-12-05 18:02
清风☆薰衣草
阅读(276)
评论(0)
推荐(0)
摘要:
【问题描述】 给定一个有向图,设计一个算法,求解并输出该图的各个强连通分量。 1 package org.xiu68.exp.exp9; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Stack 阅读全文
posted @ 2017-12-05 18:00
清风☆薰衣草
阅读(258)
评论(0)
推荐(0)
摘要:
【问题描述】 给定一个有向图,要求使用深度优先搜索策略,判断图中是否存在环。 1 package org.xiu68.exp.exp9; 2 3 public class Exp9_1 { 4 5 //用深度优先搜索判断图中是否存在环 6 public static void main(String 阅读全文
posted @ 2017-12-05 17:59
清风☆薰衣草
阅读(389)
评论(0)
推荐(0)
摘要:
【问题描述】 给定一组报告,其中的每个报告设置了一个开始时间si和结束时间fi。设计与实现一个算法,对这组报告分配最少数量的教室,使得这些报告能无冲突的举行。 1 package org.xiu68.exp.exp8; 2 3 import java.util.ArrayList; 4 import 阅读全文
posted @ 2017-12-05 17:58
清风☆薰衣草
阅读(565)
评论(0)
推荐(0)
摘要:
【问题描述】 给定n个活动,其中的每个活动ai包含一个起始时间si与结束时间fi。设计与实现算法从n个活动中找出一个最大的相互兼容的活动子集S。 要求:分别设计动态规划与贪心算法求解该问题。其中,对贪心算法分别给出递归与迭代两个版本的实现。 动态规划版本描述: 下面我们再换个角度考虑上面的问题。很多 阅读全文
posted @ 2017-12-05 17:55
清风☆薰衣草
阅读(319)
评论(0)
推荐(0)
摘要:
【问题描述】 给定一个无回路的无向图(即树),设计一个动态规划算法,求出该图的最大独立集,并输出该集合中的各个顶点值。 1 package org.xiu68.exp.exp7; 2 3 import java.util.ArrayList; 4 5 public class Exp7_1 { 6 阅读全文
posted @ 2017-12-05 17:52
清风☆薰衣草
阅读(431)
评论(0)
推荐(0)

浙公网安备 33010602011771号