当前位置:网站首页 > Go语言开发 > 正文

广度优先搜索算法c语言实现(广度优先搜索代码c语言实现)



深度优先搜索的实现时递归,搜索算法的原理就是枚举,利⽤计算机的⾼效,在加上⼈类制定的规则,枚举出所有的可能情况,找到可⾏的解或最有的解。

深度优先搜索时图遍历的⼀种,⽤⼀句话概括就是“⼀直往下⾛,⾛不通就回头,换路再⾛,直到⽆路可⾛”具体

算法描述:

选择⼀个起始点u作为当前结点,执⾏操作

a.访问当前结点,并标记该结点以被访问,然后跳到b;

b.如果存在⼀个和当前结点相邻并且尚未访问的结点u,则将u设为当前结点,继续执⾏a

c.如果不存在这样的u结点,则进⾏回溯,回溯的过程就是回退当前结点

上述所说的当前结点需要使⽤栈来维护,每次访问新的结点加⼊栈,回溯的时候就出栈。

例如:给定⼀个n个结点的⽆向图,要求访问到的结点⼊栈,回溯的时候出栈,求输出整个过程的遍历序列。

遍历规则:

1、如果当前结点的相邻结点已经被访问,则不能再访问

2、每次从当前结点到相邻结点中寻⼀个编号最⼩的没有访问的结点进⾏访问

如图1所示,对上图以深度优先的⽅式进⾏遍历,起点是 0;

算法实现:

1、visit1[MAXN]数组是⼀个bool数组,⽤来标记某个结点是否被访问,初始化为false;已经访问过的结点执⾏

回溯

2、visit1[u] = true;对未访问结点u标记为访问状态

3、dfs_add(u);⽤来u存储到访问序列中,函数实现:

4、adj[MAXN][MAXN]是图的邻接矩阵,⽤0或1来代表点是否连通。程序如下:

adj[u][v] = 1代表u和v之间存在⼀条边;adj[u][v] = 0代表没有边

给出n(n<=10), 求n! = n*(n-1).....3*2*1,f(n) = n!,f(n) = n*f(n-1)(n>0).

满⾜递归的特性,深搜可以从n结点到0结束,结束的返回值为1;

https://blog.csdn.net/A_66/article/details/?spm=1001.2014.3001.5501

到此这篇广度优先搜索算法c语言实现(广度优先搜索代码c语言实现)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • linux驱动开发入门与实战pdf(linux驱动开发书)2025-05-23 12:18:08
  • 时钟代码c语言(电子时钟c语言)2025-05-23 12:18:08
  • 苹果开发者账号个人注册流程视频(苹果开发者账号个人注册流程视频怎么下载)2025-05-23 12:18:08
  • 工具类软件开发(工具类软件开发流程)2025-05-23 12:18:08
  • 苹果开发者账号注册流程2023最新(2021苹果开发者账号注册)2025-05-23 12:18:08
  • goa电路(goa电路结构及驱动方法与流程)2025-05-23 12:18:08
  • 苹果开发者账号注册流程多少钱一年(苹果开发者账号注册需要几天)2025-05-23 12:18:08
  • 单片机程序编写用什么语言(单片机程序编写用什么语言比较好)2025-05-23 12:18:08
  • goa电路工作原理(gip电路原理)2025-05-23 12:18:08
  • ddd领域驱动开发(ddd 领域驱动)2025-05-23 12:18:08
  • 全屏图片