摘要: 将数组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 清风☆薰衣草 阅读(378) 评论(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 清风☆薰衣草 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 首先利用归并排序算法对数组进行排序,时间复杂度为O(nlogn),接着再利用时间复杂度为O(n) 的去重复算法去掉数组中的重复元素。总的时间复杂度为O(nlogn)。 (这题应该用分支算法解决)以下为分支算法 代码不是分支算法 1 package org.xiu68.ch02.ex2; 2 3 pu 阅读全文
posted @ 2017-12-05 20:47 清风☆薰衣草 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 20:41 清风☆薰衣草 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 20:38 清风☆薰衣草 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 20:35 清风☆薰衣草 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 20:32 清风☆薰衣草 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 20:25 清风☆薰衣草 阅读(184) 评论(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 清风☆薰衣草 阅读(495) 评论(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 清风☆薰衣草 阅读(178) 评论(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 清风☆薰衣草 阅读(179) 评论(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 清风☆薰衣草 阅读(400) 评论(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 清风☆薰衣草 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 假设关键字的总数为n,用c[i,j]表示第i个关键字到第j个关键字的最优二叉查找树的代价,我们的目标是求c[0,n-1]。要求c[i,j],首先要从第i个关键字到第j个关键字中选一个出来作为根结点,选出根结点后,最优二叉搜索树的代价为左子树的代价加上右子树的代价,由于每选出一个根结点,每个关键字的搜 阅读全文
posted @ 2017-12-05 19:58 清风☆薰衣草 阅读(449) 评论(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 清风☆薰衣草 阅读(1092) 评论(0) 推荐(0) 编辑
摘要: 设字符串的长度为n,整型数组arr[0. . .n-1]的第一个数和最后一个数为开始点与结束点的位置,中间的数为拆分点的位置,设cost[i,j]为第i个分割点到第j个分割点的最小代价,两个分割点之间要有大于等于一个分割点才能把字符串继续拆分,因此j-i>=2; 得到递推式 1 package or 阅读全文
posted @ 2017-12-05 19:50 清风☆薰衣草 阅读(397) 评论(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 清风☆薰衣草 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 19:41 清风☆薰衣草 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-12-05 19:39 清风☆薰衣草 阅读(202) 评论(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 清风☆薰衣草 阅读(336) 评论(0) 推荐(0) 编辑