C语言算法:深度优先探索

本文通过一个实例介绍了如何使用C语言实现深度优先搜索(DFS)解决找到两个城市间最短距离的问题。文章包含问题描述、二维数组表示关系、递归函数实现DFS及运行结果展示。
摘要由CSDN通过智能技术生成
  这是我从一本书上看的的一道题,特来与大家分享,如下:
  假设有5个城市编号为1,2,3,4,5,它们之间的关系为如图 C语言算法:深度优先探索
        图中<-表示公路,<-上的数字为距离,并且公路为单向公路,如1城市与5城市之间关系为:从1可以到5,距离为10km,但不能从5到1,其他类似。
        现在有个人住在1城市,他想去拜访住在5城市的朋友,求他所走的最短距离(不需要求路径)。

        对于这个问题我们就可以使用 深度优先探索的方法,深度优先探索的意思是我们在这一步可以干什么,有几个选择,选择其中一个可能后,再到下一步可以干什么,有几个选择,直到达到目的,但这只是其中的一条路,我们需要找出其他的可能性,这就需要返回。深度优先探索就是一步一步都试图走完所有的点,尝试所有的可能性。如: 我们是从1开始,1城市可以到2城市和5城市,我们选择5城市,达到目的并算出距离返回,在尝试走2城市,并且标记2城市已走过,防止陷入死循坏,就这样一步一步的尝试完所有的可能性,在每次达到目的后把这个方法所需的距离与保存的最小距离比较,最后输出最小距离。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值