如图,百度地图上有5个地点,各个地点间是单向的路径,试求出从1到5的最短路径。

从图中可以得到一个5*5的二维矩阵,利用深度搜索算法,求出最短路径。从最后的运行结果,可以直观的看出搜索的过程

代码实现如下:


#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;#define M 99999999const int CityNum = 5;
const int cityMap[CityNum][CityNum] =
{0,2,M,M,10,M,0,3,M,7,4,M,0,4,M,M,M,M,0,5,M,M,3,M,0
};
bool book[CityNum] = { false };
int iMin = M;
vector<int> vecPath;
void ShowPath()
{for (size_t i=0; i<vecPath.size(); i++){printf("->%d", vecPath[i]+1);}
}
void dfs(int iCur, int iDes, int iDis)
{vecPath.push_back(iCur);if (iDis > iMin){ShowPath();printf("->More than Min:%d>%d\r\n", iDis, iMin);return;}if (iDes == iCur){if (iDis < iMin){iMin = iDis;}ShowPath();printf("->MinPath:%d\r\n", iMin);return;}for (int i=0; i<CityNum; i++){if (cityMap[iCur][i] != M && !book[i]){book[i] = true;dfs(i, iDes, iDis + cityMap[iCur][i]);vecPath.pop_back();book[i] = false;}else{ShowPath();printf("->%dX\r\n", i + 1);}}}int main()
{book[0] = true;dfs(0, 4, 0);printf("Shortest path is %d", iMin);return 0;
}

运行结果:打印出路径

深度搜索算法查找最短路径相关推荐

  1. Java1.使用二分搜索算法查找任意N个有序数列中的指定元素。 2.通过上机实验进行算法实现。 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。 4.至少使用两种方法进行编程,直接查

    1.使用二分搜索算法查找任意N个有序数列中的指定元素. 2.通过上机实验进行算法实现. 3.保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告. 4.至少使用两种方法进行编程,直接查找/递归 ...

  2. 深度搜索算法(DFS)

    深度搜索算法(DFS) 提示:大家听到搜索二字,脑子里面是不是便会出现高大山的词语,今天小编就以最简单方式带大家入门. 简单解释: ----显然小编不是概念的搬运工------------------ ...

  3. 深度搜索算法C语言实现--以走迷宫为例

    深度搜索算法是沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点.这一过程一直进行到已发现从源节点可达的所有节点为止.如果还存在未 ...

  4. 深度搜索算法(python实现)获取所有叶子节点到根节点的路径

    深度搜索算法(python实现)获取所有叶子节点到根节点的路径 1. 目标 对于下图中的树结构,遍历输出所有叶子节点到根节点的路径. 2. 实现方式 Python代码如下: # -*- coding: ...

  5. 算法思想-深度搜索算法-leetcode相关题目总结

    通过这篇文章你能学到什么 搜索算法 深度优先搜索 分析过程 实现代码 进出栈过程示意图 DFS算法应用-Leetcode相关题目 Leetcode 78 Subsets Leetcode 90 Sub ...

  6. find linux 目录深度_linux 查找目录或文件

    linux 查找目录或文件 转载:http://hi.baidu.com/corylus/blog/item/911f1a0871817ad962d98686.html --------------- ...

  7. 9*9数独问题——深度搜索算法

    转自:http://blog.csdn.net/qq_31558353/article/details/50615760 作者原来的程序有问题,会改变到已有的数值.我在原有的基础上加了book标记,修 ...

  8. Red and Black 红与黑 POJ 1979 深度搜索算法

    原题 Red and Black 题意: 只走黑砖,不走红砖,最多能走多少 黑砖. 有一个长方形的房间,覆盖了正方形的磁砖.每块磁砖的颜色,要么是红色,要么是黑色.一名男子站在一块黑色的磁砖上.他  ...

  9. Python 图_系列之基于邻接矩阵实现广度、深度优先路径搜索算法

    图是一种抽象数据结构,本质和树结构是一样的. 图与树相比较,图具有封闭性,可以把树结构看成是图结构的前生.在树结构中,如果把兄弟节点之间或子节点之间横向连接,便构建成一个图. 树适合描述从上向下的一对 ...

最新文章

  1. Spring boot的properties文件编码设置
  2. 微信小程序数据过滤(filter)方法
  3. 一个域名可以绑定多个公众号_如何在同一个浏览器中同时登录多个公众号?
  4. boost::range模块heap算法相关的测试程序
  5. php ajax 分页phpapi,ajax分页_php ajax分页代码
  6. 财务一体化项目,进度与计划11
  7. [react] 举例说明什么是高阶组件(HOC)的反向继承
  8. Linux 高性能服务器编程——多进程编程
  9. centos7修改ip地址命令_linux nmcli命令详解
  10. 贪吃蛇代码c语言100行,贪吃蛇代码-C语言.doc
  11. php 减号,PHP编码转换减号(连接符)无法转换问题
  12. 如何运用python做一个有音乐的二维码_怎样制作一个背景音乐和与文字一起的二维码?...
  13. 做事的态度与工作态度
  14. CDN加速的四大解决方案
  15. MyBatis基础入门-2
  16. 【Kickstart】2019 Round A - Parcels
  17. 重看张艺谋的《英雄》
  18. the security of smart contract- 2
  19. 关于eplan2.7一敲键盘就卡死的解决办法(亲测有效)
  20. leetcode:1552. 两球之间的磁力【最值的最值 = 二分】

热门文章

  1. 大数据三驾马车,第一个上市的Hortonworks要翻车了?
  2. 抖音不会创作爆款视频?模仿他人爆款视频轻松上热门。
  3. 数据库之Mac下Mysql命令全集
  4. echarts 重新加载数据
  5. mysql重置所有表_清空mysql指定库里所有表数据
  6. 菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
  7. 别TM去外包公司!工作群里抢个红包都得退回去...
  8. 应届生如何成功进入产品经理岗位
  9. 理财投资理念黄金法则
  10. C语言实现画爱心(两种方式画法)