文章目录

  • 一、DFS基础
  • 二、C++代码一阶
    • 1.图片:
    • 2.转化成矩阵
    • 3.输入
    • 4.输出
    • 5.代码
  • 二、C++

一、DFS基础

https://blog.csdn.net/sandalphon4869/article/details/89345189

二、C++代码一阶

1.图片:

2.转化成矩阵

0代表通道,1代表无路

0 0 0 0
1 0 0 1
0 0 0 0
0 0 0 0
0 0 0 0

3.输入

n行m列
矩阵
起点位置:1行1列
终点位置:1行4列

终点位置:得自己判断在哪

5 4
0 0 0 0
1 0 0 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1
1 4

4.输出

W:往上
A:往左
S:往下
D:往右
#:墙
o:终点

******************路径1******************
D S # o
# S W #
S A W A
S D S W
D W D W

对应

5.代码

#include<iostream>
#include<stack>
using namespace std;int maze[10][10];//1和0的迷宫矩阵
int vis[10][10];//记录迷宫中的某个位置是否访问过
char direct[10][10];//WASD的方向结果矩阵
int n,m;int ox,oy;  //起点位置
int ex,ey;  //终点位置int points=0;    //记录所遍历的点的数量int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};//四个方向struct point//位置
{int x,y;
} p;stack<point> path,temp;//记录路径,temp是一个临时变量,和path一起处理路径int count;//路径条数void dfs(int x,int y)//x,y:当前位置
{if(x==ex-1 && y==ey-1)//成功---下面处理路径问题{if(path.size()!=points) //必须走完所有的点,而不是抄捷径{return ;}cout << "******************路径"<< ++count <<  "******************" << endl;while(!path.empty())//将path里面的点取出来,放在temp里面{//path从栈顶-栈底的方向,路径是从终点-起点的顺序point p1 = path.top();path.pop();temp.push(p1);}point lastnode;while(!temp.empty()){//输出temp里面的路径,这样刚好是从起点到终点的顺序point p1 = temp.top();temp.pop();path.push(p1);//将路径放回path里面,因为后面还要回溯!!!if(path.size()==points){direct[p1.x][p1.y]='o';}else if(path.size()>1){if(p1.x-lastnode.x==1){direct[lastnode.x][lastnode.y]='S';//下}else if(p1.x-lastnode.x==-1){direct[lastnode.x][lastnode.y]='W';//上}else if(p1.y-lastnode.y==1){direct[lastnode.x][lastnode.y]='D';//右}else if(p1.y-lastnode.y==-1){direct[lastnode.x][lastnode.y]='A';//左}}lastnode.x=p1.x;lastnode.y=p1.y;}//输出WASD矩阵for(int i=0;i<n;i++){for(int j=0;j<m;j++){cout<<direct[i][j]<<' ';}cout<<endl;}return;}if(x<0 || x>=n || y<0 || y>=m)//越界return;//如果到了这一步,说明还没有成功,没有出界for(int i=0;i<4;i++)//从4个方向探测{int nx = x + dir[i][0];int ny = y + dir[i][1];//nx,ny:选择一个方向,前进一步之后,新的坐标//条件:nx,ny没有出界,maze[nx][ny]=0这个点不是障碍可以走,vis[nx][ny]=0说明(nx,ny)没有访问过,可以访问if(0<=nx && nx<n && 0<=ny && ny<m && maze[nx][ny]==0 && vis[nx][ny]==0){vis[nx][ny]=1;//设为访问过p.x = nx;p.y = ny;path.push(p);//让当前点进栈dfs(nx,ny);//进一步探测vis[nx][ny]=0;//回溯path.pop();//由于是回溯,所以当前点属于退回去的点,需要出栈}}
}int main()
{count = 0;cin >> n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){direct[i][j]='#';vis[i][j] = 0;cin >> maze[i][j];if(maze[i][j]==0){points++;}}}cin>>ox>>oy;cin>>ex>>ey;vis[ox-1][oy-1]=1;p.x = ox-1;p.y = oy-1;path.push(p);//起点先入栈dfs(ox-1,oy-1);return 0;
}

二、C++

一笔画猫游戏辅助器DFS相关推荐

  1. 用C++制作的游戏辅助器,这是我见过最牛逼的辅助器,仅用21秒就结束了游戏!

    使用C++写一个简单的游戏辅助器,内含源代码.在Debug目录内有两个文件,game.exe是游戏,GameHack.exe是辅助器.实现界面如下: 项目结构展示: 部分源码展示: 对于写辅助器代码来 ...

  2. 使用C#与cheat engine 制作游戏辅助器,以古剑三为例

    cheat engine 下载cheat engine 进入cheat engine官方网站进行下载.下载完成后安装即可. cheat engine汉化 在官网下载中文简体语言包. 将下载好的语言包解 ...

  3. Auto js编写微信小游戏 《一笔画完》 辅助工具--开发篇

    前言: 1.开发工具:Auto js 2.平台:安卓6.0以上 3.开发语言 :javascript 效果演示: 这里附上效果展示视频: 开发步骤: 1.建模,将游戏环境转化为数据 2.使用算法,寻找 ...

  4. 交易猫不显示服务器,交易猫上号器一直显示检查游戏环境

    交易猫上号器怎么登录? 1.进入交易猫官网,在首页搜索店铺名字:租号社区 2.进入卖家店铺:租号社区 选购帐号 3.下单后等待客服发送帐号信息:上号器下载链接和解锁码 4.收到解锁码后进入下载链接下载 ...

  5. 【原创】IOS游戏辅助--天天酷跑助手的实现

    标 题: [原创]IOS游戏辅助--天天酷跑助手的实现 作 者: coltor 时 间: 2014-04-16,20:20:44 链 接: http://bbs.pediy.com/showthrea ...

  6. 我的世界服务器附魔修改器,我的世界附魔辅助器

    详情 我的世界附魔辅助器是一款好用的软件,全新的冒险世界给不一样的体验,海量爆款玩法你想玩的这里全都有,带你无敌带你飞,在这里发现专属于你的文明冒险,有个它就能感受不同的精彩瞬间,可玩性很高哦,感兴趣 ...

  7. \t\tFlash网页游戏辅助工具制作简析

    <热血三国>好像是比较热,玩的人也挺多的,年前一个朋友希望能让我写一个这个游戏的外挂,也出于无聊,所以去玩了一下,谁知道一玩就有点喜欢这个游戏了,当然玩归玩,东西还是要做地,当然还不能算得 ...

  8. 游戏辅助丨手把手简单实现射击游戏逆向(1)

    作者:问号哥 前言:        首先跟大家说说我对游戏辅助的理解.什么是游戏辅助呢?一是通过修改程序中的数据达到变态功能,比如变态血量,变态射速,飞天遁地:二是通过修改游戏程序代码的执行顺序,实现 ...

  9. python生成一笔画_一笔画小游戏-算法-python+autojs

    一笔画小游戏,好玩的很 就是到了后面比较麻烦,手动找路径太慢了,作为程序员,这又是一个锻炼的好机会是不是!于是乎,了解了一下dfs和bfs算法(都是路径搜索算法),然后就开撸: #pointArr=[ ...

最新文章

  1. 彻底搞懂视觉-惯性SLAM:基于VINS-Fusion(正式开课)
  2. viewpage的使用
  3. js this pointer 指针
  4. [ZZ88]送给即将毕业奔三的男人们的16条忠告
  5. 云服务centos搭建jupyter notebook并通过外网访问
  6. LeetCode 413. 等差数列划分(DP)
  7. anaconda+python3.7安装keras_win10 python3.7 Anaconda3 安装tensorflow+Keras
  8. android java 调试快捷键_最强Android studio 使用快捷键和调试技巧
  9. 【Redis】Redis入门详解(一)
  10. 推荐术语:CPM、CPC、CPA、CPI、CTR、CPV、CVR
  11. 分水岭算法c语言,Opencv分水岭算法学习
  12. js:webpack插件BannerPlugin添加版权信息
  13. 基于ssm Vue+elementui农家乐管理系统java 项目源码介绍
  14. SC-Lego-LOAM解析(上)
  15. 荔枝文案,水果荔枝发朋友圈文案
  16. wannier插值能带拟合2
  17. ROS通信机制(一) —— 话题(topic)与msg文件
  18. bzoj 5498: [2019省队联测]皮配【dp】
  19. ABAP学习----ALV注意事项
  20. vue-player 官网demo示例

热门文章

  1. 匈牙利算法实现(sklearn 实现与 scipy实现测试)
  2. instell-gnu-acct
  3. 2023美赛春季赛Y题保姆级思路及代码 了解二手帆船
  4. Java 常用功能三--解析XML
  5. 最近邻插值法(nearest_neighbor)
  6. 快速编译黑苹果引导OpenCore文字与视频
  7. WebView相关面试题
  8. 原生JS超级马里奥(第三天)
  9. 灰度化(Grayscale)
  10. 做年会直播遇到这些难点,对应的解决方案已备好