一笔画猫游戏辅助器DFS

2023-10-29 09:58
文章标签 游戏 dfs 辅助 笔画

本文主要是介绍一笔画猫游戏辅助器DFS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、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列
矩阵
起点位置:11列
终点位置:14

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

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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299881

相关文章

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

ural 1149. Sinus Dances dfs

1149. Sinus Dances Time limit: 1.0 second Memory limit: 64 MB Let  An = sin(1–sin(2+sin(3–sin(4+…sin( n))…) Let  Sn = (…( A 1+ n) A 2+ n–1) A 3+…+2) An+1 For given  N print  SN Input One

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

深度优先(DFS)和广度优先(BFS)——算法

深度优先 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支,当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

设计模式之工厂模式(通俗易懂--代码辅助理解【Java版】)

文章目录 1、工厂模式概述1)特点:2)主要角色:3)工作流程:4)优点5)缺点6)适用场景 2、简单工厂模式(静态工厂模式)1) 在简单工厂模式中,有三个主要角色:2) 简单工厂模式的优点包括:3) 简单工厂模式也有一些限制和考虑因素:4) 简单工厂模式适用场景:5) 简单工厂UML类图:6) 代码示例: 3、工厂方法模式1) 在工厂方法模式中,有4个主要角色:2) 工厂方法模式的工作流程

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我