NEFU 558 迷宫寻路

题目链接

简单搜索题

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
char c[1005][1005];
int n,m;
bool vis[1005][1005];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
void dfs(int i,int j)
{
    if(i<0||j<0||i==n||j==m||vis[i][j]||c[i][j]==‘#‘) return ;
    vis[i][j]=1;
    for(int k=0;k<4;k++)
    dfs(i+dx[k],j+dy[k]);
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=0;i<n;i++)
        scanf("%s",c[i]);
        memset(vis,0,sizeof(vis));
        int sx=-1,sy,ex,ey;
        for(int i=0;i<n;i++)
        for(int j=0;j<m;j=j+(m-1))
        {
            if((c[i][j]==‘*‘)&&(sx==-1))
            {
                sx=i;sy=j;
            }
            else if(c[i][j]==‘*‘)
            {
                ex=i;ey=j;
            }
        }
        for(int i=0;i<n;i=i+(n-1))
        for(int j=0;j<m;j++)
        {
            if((c[i][j]==‘*‘)&&(sx==-1))
            {
                sx=i;sy=j;
            }
            else if(c[i][j]==‘*‘)
            {
                ex=i;ey=j;
            }
        }
        dfs(sx,sy);
        if(vis[ex][ey]) puts("YES");
        else puts("NO");
    }
    return 0;
}
时间: 2024-10-05 23:20:57

NEFU 558 迷宫寻路的相关文章

数据结构应用实例#栈#迷宫寻路

使用数据结构 栈(Stack)来实现一种低级的迷宫寻路的功能.低级是因为无法判断路径是不是最短的. 这里使用的栈结构如图 (这图我选择死亡...) 注意结构体里DataType的实际含义,是另外一个结构体,用于储存二维位置x,y 地图使用一个10x10的二维数组来表示,数字1表示该点是墙壁,0表示可以行走,2表示已经走过的地方. 我们用栈来储存走过的位置,比如我们从起点(4,0)出发,就把(4,0)压入栈,并把该点数值改为2,意为已经来过了.如果遇到死路,那就不停地出栈,直到栈顶的这个点周围有路

Unity3D之迷宫寻路使用_直接寻路

学了一段时间的寻路,在网上也学了挺多算法,今天整理了一下,使用到Unity的3D界面中用于寻路,首先是简单的寻路算法,以下是地图: 地图数组: using UnityEngine; using System.Collections; public static class MapsArray { public static int[,] MazeItem = new int[15, 10] //初始化迷宫 { {1,1,1,1,1,1,1,1,1,1}, {1,0,1,1,1,0,0,0,1,1

Unity3D之迷宫寻路_A*最短路径寻路

A*寻路相信很多人都听说过,也是比较基本的一种算法,具体概念我就不多说了,网上查找一下一大堆,我直接贴上我的A*应用方法,以下是地图: 接下来是地图数组: using UnityEngine; using System.Collections; public static class MapsArray { public static int[,] MazeItem = new int[15, 10] //初始化迷宫 { {1,1,1,1,1,1,1,1,1,1}, {1,0,1,1,1,0,0

迷宫寻路问题全解

1.深度优先搜索(DFS)+回溯 最基本的板子: void DFS(int x,int y) { if (x,y都与目标点相同) { 得到一个解; } else { for (int i = 1; i <= 四个方向; i++) if (满足进一步搜索条件) { 为进一步搜索所需要的状态打上标记; DFS(to_x, to_y); 恢复到打标记前的状态;//也就是回溯一步 } } } 适用类型①:求可行解数量 https://www.luogu.org/problemnew/show/P1605

迷宫寻路

题目描述 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: 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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线.入口点为[0,0],既第一空格是可以走的路. Input 一个N

用栈实现迷宫游戏寻路

在我们学习数据结构的时候都曾经见过迷宫游戏,迷宫游戏的实现其实并不难,但是,我们在实现每一个算法的时候都应该想一想这个问题的每一个解.最近,博主已经开始重温数据结构啦,记得我们以前学习这里的时候,老师会用队列来实现迷宫最优解的寻找,氮素呢,博主就是这么可爱,博主就是想试试用栈来找一下. 在实现之前让我们先来复习一下栈的特点:first in last out 对于栈这种数据结构我们只能在栈顶对其操作,根据实际情况可将其实现成链式或者顺序结构.但是一般情况下我们都会实现成顺序结构,因为栈的特点导致

3-4-迷宫寻路-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第3章  栈和队列 - 迷宫寻路 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.SequenceStack.c        相关测试数据下载

AI-随机迷宫&amp;迷宫求解

本文记录了,人工智能中简单的搜索策略中的路径搜索策略中的A*算法,来实现迷宫寻路的问题.(这只是一次本人的课外作业) 完整的程序源码已经发送到我的Git.这里只记录了我的思路和感想以及收获. 产生随机迷宫 迷宫求解没有迷宫怎么可以呢.而本人是个懒人,每次都要手动输入迷宫,重复性的工作让我很不爽.你可以在程序中用数组定义一个迷宫啊,有强迫症的我,怎么可以这样随便的要求自己的程序呢.及时求解算法的出来了,但是测试数据有限,还是让我很不爽的,所以,干脆先花一些时间,写个随机迷宫的产生吧. 遇事先搜索,

一道广搜寻路题

同样是在qq群里看到的题目,想了好久算法,实现也用了很久. 关于题目首先看图: 总的来说,就是一个二维迷宫的寻路,迷宫中有对应的钥匙和刺,每走一步会消耗1点Hp,当走到刺上时会额外消耗100点hp,持有对应颜色的钥匙通过刺时不用额外消耗Hp. 给予起点和终点的坐标,,输出移动方式,让人物抵达终点所消耗的Hp尽可能的小. 例子: 3 3 1..a##A...1 13 3这个是输入数据 第一个代表高 第二个宽 第三个是钥匙和陷阱的对数 .代表平地 #代表墙 小写字母是钥匙 大写字母是对应的陷阱输出为