- 博客(12)
- 收藏
- 关注
原创 算法分析与设计第九次作业
1.问题1.1 最长公共子序列1.2背包问题2.解析 2.1 最长公共子序列2.2背包问题3.设计LCS算法:背包算法:4.分析LCS算法:时间复杂度:O(nm) n,m为字符串的长度背包算法:时间复杂度:O(nm)5.源码https://github.com/lmouette/-/blob/main/LCS.cpp...
2021-06-22 05:10:44 621
原创 算法分析与设计第七次作业
1.问题设 m 万元钱,n 项投资,函数 表示将 x 万元投入第 i 项项目所产生的效益,i=1,2,…,n.问:如何分配这 m 元钱,使得投资的总效益最高?2.解析 3.设计for (int i=1;i<=number;i++) { for (int j=0;j<=money;j++) { dp[i][j]=0; for (int k=0;k<=j;k++) { if (dp[i][j]<f[i][k]+dp[i-1][j-k])
2021-06-22 04:02:15 110
原创 算法分析与设计第十二次作业
1.问题图的m着色问题:给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2.解析通过回溯的方法,不断的为每一个节点着色,在前面n-1个节点都合法的着色之后,开始对第n个节点进行着色,这时候枚举可用的m个颜色,通过和第n个节点相邻的节点的颜色,来判断这个颜色是否合法,如果找到那么一种颜色使得第n个节点能够着色,那么说明m种颜色的方案是可行的。用邻接矩阵存储无向连通图G。数组color[
2021-06-22 03:04:19 212
原创 算法分析与设计第十一次作业
1.问题代码(码字):Q {001,00,010,01}表示字符 a, b, c, d同一序列:0100001产生两种译码(产生歧义):01 00 001; 010 00 01给定字符集和每个字符的频率,求关于 C 的一个最优前缀码。2.解析构造最优前缀码的贪心算法就是哈夫曼算法(Huffman)实例:{5, 5, 10, 10, 10, 15, 20, 25}3.设计for(int i = 1; i <= hC.n; ++ i){int len = 0, child
2021-06-22 02:43:39 108
原创 算法分析与设计第十次作业
1.问题2.解析贪心法:如果存在装载方案,则寻找使得第一条船的装载量与c1差值最小的解。C1:W1、W2;C2:W3.并且C1-(W1+W2)不是最小解,所以交换C1和C2上的集装箱,使得存在更小解。交换W2和W3,使得C1-(W1+W3)< C1-(W1+W2)重复以上方法,直到找到一个使得第一条船装载量与C1的差达到最小的解。3.设计sort( first: w+1, last: w+1+n) ; int cnt=1;for(int i=1;i<=n;i++){ if
2021-06-22 01:57:47 107
原创 算法分析与设计第八次作业
1.问题设A1,A2,A3,…,An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,P2,…,Pn>给出。给定向量 P,确定一种乘法次序,使得基本运算的总次数达到最小。如:P=<5,6,7,8>,则A1:5×6,A2:6×7,A3:7×8,有两种结合次序:1.(A1A2)A3:5×6×7+5×7×8=4902. A1(A2A3):5×6×8+6×7×8=5762.解析蛮力法:枚举所有可能的乘法次序,针对每种次序计算基本运算的次
2021-06-22 01:36:41 94
原创 算法分析与设计第六次作业
1.问题选第k小元素:特定分治策略2.解析3.设计int find(int L[],int k,int size){int pos=L[(size+1)/2];int L1[size/2+5],L2[size/2+5];int size1=0,size2=0;for(int i=1;i<=size;i++){if(i!=(size+1)/2){if(L[i]<=pos)L1[++size1]=L[i];else L2[++size2]=L[i];}}if(k
2021-06-22 01:14:19 117
原创 算法分析与设计实践期末大作业
1.问题选题1:设有n项任务,加工时间分别表示为正整数t1,t2,…,tn.现有2台同样的机器,从0时刻开始安排对这些任务的加工。规定只要有待加工的任务,任何机器就不得闲置。如果直到时刻T所有任务都完成了,总加工时间就等于T。设计一个算法找到使得总加工时间T达到最小的调度方案。设给定的实例如下:t1=1,t2=5,t3=2,t4=10,t5=3试给出一个加工时间最少的调度方案,给出计算过程和问题的解。2.解析这道题是一个0-1背包问题,适合使用动态规范算法来解决,通过从假设背包只能做1个单位开始
2021-06-21 20:37:25 2766
原创 算法分析与设计第四次作业
1.问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。2.解析3.设计[核心伪代码]//伪代码1<=p<=r<=n;A[p..r];void MergeSort(A,p,r){ if (p<r){ q=floor((p+r)/2); MergeSort(A,p,q); MergeSort(A,q+1,r); Merge(A,p,r,q); } }void Merge(A,p,r,q){ x=q-p+
2021-04-08 00:04:01 78
原创 算法分析与设计第三次作业
1.问题写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2.解析1)顺序查找:从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。2)二分查找:用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或
2021-03-22 16:06:37 91
原创 算法分析与设计第二次作业
1.问题用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵),按实验报告模板编写算法。对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径,按实验报告模板编写算法。。2.解析floyd:1.从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。把图用邻接矩阵G表示出来,如
2021-03-21 14:54:00 178
原创 算法分析与设计第一次作业
1.问题(1)举一个实例,画出采用Prim算法构造最小生成树的过程,并编写算法。(2)举一个实例,画出采用Kruskal算法构造最小生成树的过程,并编写算法。2.解析[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]定义无向加权图的生成树代价为树中所有边的代价(权值)之和。最小代价生成树是具有最小代价的生成树。求无向连通图的最小代价生成树,这里分别应用Prim算法、Kruskal算法,这两种算法的设计技术都属于贪心法。用贪心法求解优化问题,最优解是在一系列求解步骤的最
2021-03-14 23:56:01 223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人