算法分析与设计
笑子i
这个作者很懒,什么都没留下…
展开
-
凸多边形最优三角剖分(动态规划)
【问题描述】使用动态规划算法解凸多边形最优三角剖分问题,具体来说就是,依据递归式,按照顺序求得子问题,使得该三角剖分中诸三角形上权之和为最小。【输入形式】在屏幕上输入凸多边形顶点个数和顶点坐标。按逆时针顺序输入顶点坐标。【输出形式】最优三角剖分后的三角形顶点。【样例输入】 7 8 26 0 20 0 10 10 0 22 12 27 21 15 26【样例输出】 012 234 024 456 046【样例说明】 输入:顶点个数为7,每一行为一个顶点坐标,以空格分隔。如下图所示,第二行至第八行分别为顶点v0原创 2022-06-23 09:10:04 · 1259 阅读 · 1 评论 -
哈夫曼编码(贪心算法)
【问题描述】使用贪心算法求解Huffman编码问题,具体来说就是,根据每个字符的出现频率,使用最小堆构造最小优先队列,构造出字符的最优二进制表示,即前缀码。【输入形式】在屏幕上输入字符个数和每个字符的频率。【输出形式】每个字符的Huffman编码。【样例输入】 6 45 13 12 16 9 5【样例输出】a 0b 101c 100d 111e 1101f 1100【样例说明】 输入:字符个数为6,a至f每个字符的频率分别为:45, 13, 12, 16, 9, 5。 输出:每个字符对应的Huffman编码原创 2022-06-23 09:04:19 · 1447 阅读 · 0 评论 -
单元最短路径(贪心算法)
【问题描述】Dijkstra算法解决的是带权重的有向图上单源最短路径问题。所有边的权重都为非负值。设置顶点集合S并不断地作贪心选择来扩充这个集合。使用最小堆数据结构构造优先队列。第1个顶点为源。【输入形式】在屏幕上输入顶点个数和连接顶点间的边的权矩阵。【输出形式】从源到各个顶点的最短距离及路径。【样例输入】50 10 0 30 1000 0 50 0 00 0 0 0 100 0 20 0 600 0 0 0 0【样例输出】10: 1->250: 1->4->330: 1->460: 1->4->3->5【原创 2022-06-23 09:02:07 · 811 阅读 · 0 评论 -
最小生成树prime(贪心算法)
【问题描述】Prim算法解决的是带权重的无向图上连接所有顶点的耗费最小的生成树。Q使用最小堆数据结构。【输入形式】在屏幕上输入顶点个数和连接顶点间的边的权矩阵。【输出形式】顺序输出按照贪心选择得到的各顶点序号,及该顶点的前驱顶点序号,及路径长度。【样例1输入】80 15 7 0 0 0 0 1015 0 0 0 0 0 0 07 0 0 9 12 5 0 0 0 0 9 0 0 0 0 00 0 12 0 0 6 0 00 0 5 0 6 0 14 80 0 0 0 0 14 0 310 0 0 0 0 8原创 2022-06-23 08:58:30 · 381 阅读 · 0 评论 -
深度优先搜索算法求解TSP问题(搜索算法)
【问题描述】采用深度优先搜索算法求解TSP问题,并在搜索过程中,使用界限条件(当前结点已经走过的路径长度要小于已求得的最短路径)进行“剪枝”操作(不再对后续结点进行遍历),从而提高搜索效率。采用queue模块中的栈(LifoQueue)来实现深度优先搜索。【输入形式】在屏幕上输入顶点个数和连接顶点间的边的邻接矩阵,边上的权可能有小数点。【输出形式】在整个算法过程中的先后搜索路径(最多输出20次最先搜索的路径),最优值和其中一条最优路径。【样例1输入】40 30 6 430 0 5 106 5 0 204 1原创 2022-06-23 08:57:11 · 750 阅读 · 0 评论 -
A*算法解八数码拼图问题(搜索算法)
任意选一张图片,将其分成M×N个小块,去掉其中任意一块,然后打乱顺序。游戏规则是:经过若干步移动从而复原原始图片中小块的顺序,每次移动可以将与空格相邻的小块移动到空格处。原创 2022-06-23 08:52:37 · 1370 阅读 · 0 评论