首页 > 其他分享 >逃离迷宫

逃离迷宫

时间:2023-04-11 20:01:41浏览次数:35  
标签:60 sy sx int 迷宫 逃离 &&

有一个n * m大小的迷宫。其中字符\(S\)表示起点,字符\(D\)表示出口,字符\(X\)表示墙壁,字符 \(.\) 表示平地。你需要从\(S\)走到\(D\),每次只能向上下左右相邻的位置移动,并且不能走出地图,也不能走进墙壁。

若每次移动消耗1时间,走过路都会塌陷,因此不能走回头路或原地不动。现在已知出口的大门会在T时间打开,判断在0时间从起点出发能否逃离迷宫。

数据范围n<=20, m <= 50, T <= 1000

输入

第一行3个数n,m,T

接下来是n*m的矩阵

输出

若能逃离输出YES,否则输出NO

样例输入

4 4 5
S.X.
..X.
..XD
....

样例输出

NO



easy!!!

代码:

#include <bits/stdc++.h>
using namespace std;
int dx[5]={0,-1,0,1,0},dy[5]={0,0,1,0,-1};
int n,m,T;
char a[60][60];
int sx,sy,ex,ey;
bool flag,b[60][60];
struct lj{
	int x,y;
}c[3600];
void dfs(int x,int y,int step)
{
	if(x==ex&&y==ey)
	{
		cout << "YES";
		exit(0);//终止程序
	}
	if(step>T) return;
	for(int i=1;i<=4;i++)
	{
		int xx,yy;
		xx=x+dx[i];
		yy=y+dy[i];
		if(xx>0&&xx<=n&&yy>0&&yy<=m&&!b[xx][yy]&&a[xx][yy]!='X')
		{
			b[xx][yy]=1;
			c[step].x=xx;
			c[step].y=yy;
			dfs(xx,yy,step+1);
			b[xx][yy]=0;
		}
	}
}
int main()
{
	cin >> n >> m >> T;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin >> a[i][j];
			if(a[i][j]=='S')
			{
				sx=i;
				sy=j;
			}
			if(a[i][j]=='D')
			{
				ex=i;
				ey=j;
			}
		}
	}
	b[sx][sy]=1;
	dfs(sx,sy,0);
	if(!flag) cout << "NO";
	return 0;
}

标签:60,sy,sx,int,迷宫,逃离,&&
From: https://www.cnblogs.com/momotrace/p/go-migong-away.html

相关文章

  • 1210. 穿过迷宫的最少移动次数
    题目链接:1210.穿过迷宫的最少移动次数参考:还在if-else?一个循环处理六种移动!代码classSolution{private:staticconstexprintmov[3][3]={{1,0,0},{0,1,0},{0,0,1}};//下、右、旋转public:intminimumMoves(vector<vector<int>>&grid){......
  • 虹科案例 | 虹科Domo商业智能,助力保险公司逃离繁杂数据池!
    金融行业的发展充满着不确定性,一个具备强大承保能力和精算专业知识的资金池,对于身处该领域的公司和个人都是十分必要的。在全国城市联盟(NLC)的协助下成立的NCLMutual会员制互助保险公司,为各个地区城市提供了稳定的再保险答案。,然而,面对数字化转型这场已经打响的战斗,NCLMutual却......
  • 虹科案例 | 虹科Domo商业智能,助力保险公司逃离繁杂数据池!
    金融行业的发展充满着不确定性,一个具备强大承保能力和精算专业知识的资金池,对于身处该领域的公司和个人都是十分必要的。在全国城市联盟(NLC)的协助下成立的NCLMutual会员制互助保险公司,为各个地区城市提供了稳定的再保险答案。,然而,面对数字化转型这场已经打响的战斗,NCLMutual却因......
  • 11.迷宫问题
    原题链接:https://www.acwing.com/problem/content/description/1078/#include<iostream>#include<cstring>#include<vector>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;constintN=1010;intn,hh,tt;in......
  • 10.起火迷宫
    原题链接:acwing.com/problem/content/submission/4227/#include<iostream>#include<cstring>#include<queue>usingnamespacestd;typedefpair<int,int>PII;#definexfirst#defineysecondconstintN=1010;intn,m;charg[N][N];PIIst......
  • HJ43_迷宫问题_回溯
    ¥问题:探索沿着0路径走出矩阵迷宫。¥思路:1、第一个站位点为(0,0)坐标,站在(0,0)坐标向分别向左右上下探索,如探索到1则回溯重新探索0路径。2、比如向右走几步后,检测到了右上下都是......
  • 迷宫2
    题意样例输入:332000010000333111样例输出:6数据范围:对于10%的数据,N,M<=4,K<=1。对于30%的数据,N,M<=10。对于60%的数据,N,M<=100。对于100%的数据,N......
  • 迷宫1
    bfs最短路径有几条题意样例输入:4...S.XX..XX.E...样例输出:62数据范围:1≤n≤25解析path数组记录点代码#include<bits/stdc++.h>usingnamespacestd;......
  • 蓝桥杯之迷宫
    蓝桥杯题解迷宫下图给出了一个迷宫的平面图,其中标记为11的为障碍,标记为00的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷......
  • 迷宫
    迷宫-蓝桥云课(lanqiao.cn)publicclassN602{ staticchar[][]m=newchar[30][50]; staticchar[]d={'D','L','R','U'};//定义这个顺序为字典序答案就......