Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
356969 | 黄浙峰老师 | 【C6-7】走出迷宫的最少步数2 | C++ | 通过 | 100 | 28 MS | 404 KB | 711 | 2025-10-19 10:58:57 |
#include<bits/stdc++.h> using namespace std; char a[110][110]; int d[110][110]; int n,m,qx,qy,zx,zy; int dx[5]={0,0,1,0,-1}; //右下左上 int dy[5]={0,1,0,-1,0}; void dfs(int x, int y, int k){ d[x][y]=k; int tx,ty; for(int i=1; i<=4; i++){ tx=x+dx[i]; ty=y+dy[i]; if(tx==zx && ty==zy && k<d[tx][ty]){ d[tx][ty]=k; return; }else if(a[tx][ty]=='.' && k+1<d[tx][ty]){ dfs(tx,ty,k+1); } } } int main(){ cin>>n>>m; for(int i=1; i<=n; i++){ for(int j=1; j<=m; j++){ cin>>a[i][j]; if(a[i][j]=='S'){ qx=i; qy=j; } if(a[i][j]=='T'){ zx=i; zy=j; } d[i][j]=2e9; } } dfs(qx,qy,1); cout<<d[zx][zy]; return 0; }