C++使用回溯算法解决简单迷宫问题

发布时间:2020-07-31 12:13:09 作者:dxj728
来源:网络 阅读:1488

给你一个矩阵,如何在其中找到一条通路呢?

C++使用回溯算法解决简单迷宫问题(是不是很凌乱?^_^

C++中怎么实现呢?

较好的解决方案:使用栈解决。

解决思路:

  1. 使用FILE*open预先打开文件(绝对路径和相对路径1),注意断言。

  2. 正确读取文件,判断字符和空格,空格略过,读取字符。

  3. 从入口进入,每走一步,判断上下左右4个方向有无道路。

  4. 如果4个方向有路,则按次序先进入其中一条(将字符压栈push),并将所走过字符重置数字(后面回溯)。

  5. 如果4个方向没有,则出栈pop,即回溯,并再次判断。

  6. 逐次循环,直至判断下一个有效节点为边界时出栈,此时重置数字的路径即为通路。

注释:

  1. 1.       相对路径和绝对路径:绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe。实际上,严格的相对路径写法应为.\system32\cmd.exe其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。

  2. 2.       此次实现中为简单实现采用相对路径,将写好的“迷宫”放在同一项目文件下进行打开即可

下面为C++代码的简单实现:

预处理:

C++使用回溯算法解决简单迷宫问题

预先打开文件及处理字符

C++使用回溯算法解决简单迷宫问题

从入口节点开始判断:

C++使用回溯算法解决简单迷宫问题

回溯算法:

C++使用回溯算法解决简单迷宫问题

C++使用回溯算法解决简单迷宫问题

最后一步,测试单元:

C++使用回溯算法解决简单迷宫问题

哈哈!完成,开始测试。

C++使用回溯算法解决简单迷宫问题

似乎很成功哦!但是并没有测试另一条路径(虽然不同),把刚才函数的上下左右重新调整一下,再运行:

C++使用回溯算法解决简单迷宫问题

依旧成功!

此时,就算我们的迷宫问题就算小小的解决了吧,当然,有兴趣的童鞋可以再加探索,比如如何达到最短测试路径等。就不在此一一深究了。毕竟这个看似小小的程序也是小弟耗费一番心思的成品,谢谢大家的阅读啦!有兴趣可以关注哦!嘿嘿。


推荐阅读:
  1. C++解迷宫问题
  2. 以栈解决迷宫问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ 回溯算法 迷宫问题

上一篇:android_handler简单使用,测试

下一篇: You must call removeView() on the child's parent first

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》