作业介绍

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 小时