图的搜索算法
文章平均质量分 76
笙箫语陌
这个作者很懒,什么都没留下…
展开
-
图的遍历课后习题
例1:分数相加和为1 题目: 有一个数字1,2,3,….,9组成的数字串(长度不超过200),问如何将M(M<=20)个加号插到这个数字串中,使得形成的算数表达式的值最小,请编写一个算法解决这个问题。 注意:加号不可加在字符串的最前面或者最后面,也不应该有两个或两个以上的加号相邻。M保证小于数字串的长度 算法设计 分析 利用动态规划的方法: a) 分阶段 有几个加号就分几个阶段 b) 动态转移方程 min( function(m-1,i,k-1),num(k,j)) 程序实现:原创 2022-04-17 13:36:11 · 1992 阅读 · 0 评论 -
深度优先遍历c
1. 深度优先遍历 1. 算法框架 1. 邻接表存储的搜索算法 int visited[n];//n为结点的个数 graph head[100];//graph为邻接表存储类型 dfs(int k){//head图的顶点数组 edgenode * ptr;//图的指针 visited[k] = 1; print("访问",k); ptr = head[k].firstedge; while(ptr != null){//遍历至链表尾 if(visite原创 2022-04-13 20:17:20 · 1198 阅读 · 0 评论 -
广度优先遍历(c实现)
例1:城市最短路径问题 1. 题目: 已知若干个城市的地图,,求从一个初始到另一个城市的路径,要求该路径经过的城市最少 2. 算法设计: 我们可以使用广度优先遍历的思想来解决这个问题 图的广度优先搜索类似于树的层次遍历,逐层搜索正好可以尽快找到一个结点与另一个结点相对而言最直接的距离 程序实现 #include<stdio.h> #define N 8//N表示有8个结点,进行宏定义再之后的修改时比较方便 //建立一个存储图的结点信息的邻接矩阵 int a[N][N] = {{0,原创 2022-04-11 18:28:38 · 2870 阅读 · 0 评论