作业介绍
AC
#include<bits/stdc++.h>
using namespace std;
char mat[505][505];//mat表示矩阵的
bool vis[505][505];//vis[i][j] = 1 表示第i行第j列已经走过了
int n,m;//n行m列
int sx,sy,fx,fy,flag=0;//起点是sx行sy列
//终点是fx行fy列
void dfs(int x,int y)//深度优先搜索 大法师
{
if( x<1 || x>n || y<1 || y>m ) return;//越界
if( mat[x][y] == '#' ) return ;//撞到墙弹回去
if( vis[x][y] ) return;//已经走过了
if(x==fx&&y==fy)
{
flag = 1;
return ;
}
vis[x][y] = 1;//表示这个位置走过了
dfs(x+1,y);//下
dfs(x,y-1);//左
dfs(x-1,y);//上
dfs(x,y+1);//右
}
int main()
{
cin >> n >> m;
//输入地图
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin >> mat[i][j];
//自己加代码找到起点和终点的位置
if(mat[i][j] == 's') sx=i,sy=j;
else if(mat[i][j] == 'g') fx=i,fy=j;
}
}
dfs(sx,sy);
if(flag) cout << "Yes";
else cout << "No";
// 1、不能撞墙
// 2、不能越界
// 3、不能重复
return 0;
}
- 状态
- 已结束
- 题目
- 3
- 开始时间
- 2025-11-1 0:00
- 截止时间
- 2025-11-30 23:59
- 可延期
- 24 小时