小白的DFS算法学习历程(不定期更新)

您所在的位置:网站首页 cs61b的project3 小白的DFS算法学习历程(不定期更新)

小白的DFS算法学习历程(不定期更新)

#小白的DFS算法学习历程(不定期更新)| 来源: 网络整理| 查看: 265

迷宫算法(基础)

定义一个二维数组:

int maze[5][5] = {

0, 1, 0, 0, 0,

0, 1, 0, 1, 0,

0, 0, 0, 0, 0,

0, 1, 1, 1, 0,

0, 0, 0, 1, 0,

};

它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

输入

一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

输出

左上角到右下角的最短路径,格式如样例所示。

样例输入 复制 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 样例输出 复制 (0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) 参考代码(并非本题标准答案,但有重要参考价值): //迷宫问题的dfs算法 默认以矩形左下角点建立xOy坐标系 #include using namespace std; int min_step=99999;//代表最小步数 int arr[100][100];//遍历数组,0代表不可遍历,1代表可遍历 int visit[100][100];//访问标记数组,0代表未访问,1代表已经访问 //深度有限搜索算法,作用是将min_step改成最合理的最短路径值 void dfs(int a,int b,int p,int q,int step){ if(a==p&&b==q)//对应找到终点的一条路径,如果成功找到的情况 { if(step>m>>n;//构造出迷宫函数的行与列 for(int i=0;iarr[i][j]; } } int start_x,start_y,final_x,final_y;//初始值与终点值 cin>>start_x>>start_y>>final_x>>final_y; dfs(start_x,start_y,final_x,final_y,0); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3