第一条题解 !
2025-01-22 15:28:31
发布于:浙江
28阅读
0回复
0点赞
#include <iostream>
using namespace std;
int n,m,sx,sy,tx,ty;//行,列
char map[15][15];
bool vis[15][15],flag = 0;
int dis[4][2] = {-1,0,1,0,0,-1,0,1};
void dfs(int x,int y){
if(x == n && y == m)//
{
flag = 1;
return ;
}
for(int i = 0;i < 4;i++){
int nx = x + dis[i][0];
int ny = y + dis[i][1];
if(nx >= 1 && nx <= n && ny >= 1 && ny <= m && !vis[nx][ny] && map[nx][ny] != 'X'){//有没有越界,是否是墙,有没有标记
vis[nx][ny] = 1;
dfs(nx,ny);
}
}
}
int main(){
cin >> n >> m;//输入
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
cin >> map[i][j];//输入地图
if(map[i][j] == 'S') sx = i,sy = j;//将起点的下标存起来
}
}
dfs(sx,sy);//深搜
if(flag){//判断
cout << "YES";
}else{
cout << "NO";
}
return 0;
}
全部评论 2
这个代码可以AC
2025-03-16 来自 上海
0我的更简单!
#include <iostream> using namespace std; int main(){ int a,b; string s,t; cin>>a>>b>>s>>t; if(a==2 && b==2 && s=="SX" && t==".T")cout<<"YES"; else cout<<"NO"; return 0; }
2025-03-16 来自 上海
0好的,我的可以优化。
2025-03-21 来自 浙江
0
有帮助,赞一个