随笔分类 -  算法作业

摘要:设字符串的长度为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)
摘要:子问题定义: 定义一个二维数组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 清风☆薰衣草 阅读(660) 评论(0) 推荐(1)
摘要:子问题定义: 定义p[i][j]为布料宽为i,高为j的最优产出,每次剪下一块布料,剩余布料最多形成三块矩阵面料。每次剪裁会有两种情况,水平切割布料,其次是将布料旋转90度后在切割布料。 递归关系: 初值设定: p[0][h]=0 p[w][0]=0 求解顺序: 依次求解二维数组p的每一行,每一列,最 阅读全文
posted @ 2017-12-05 19:19 清风☆薰衣草 阅读(382) 评论(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 清风☆薰衣草 阅读(963) 评论(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 清风☆薰衣草 阅读(288) 评论(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)