0
已解决
张皓轩
中级光能
中级光能
我是个**了,连搜索都不会了
#include<iostream>
using namespace std;
int n,m,vis[16][16],f[16][16],ans=0x3f3f3f3f;
char a[16][16];
int dir[10][2]={{-1,0},{1,0},{0,-1},{0,1}},sx,sy,ex,ey,flag;
void dfs(int x,int y,int cnt){
if(x==ex && y==ey){
flag=1;
ans=min(ans,cnt);
return ;
}
for(int i=1;i<=4;i++){
int dx=dir[i][0]+x,dy=dir[i][1]+y;
if(dx>=1 && dx<=n && dy>=1 && dy<=m && !vis[dx][dy] && !f[dx][dy]){
vis[dx][dy]=true;
dfs(dx,dy,cnt+1);
vis[dx][dy]=false;
}
}
return ;
}
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'){
sx=i;
sy=j;
}else if(a[i][j]=='T'){
ex=i;
ey=j;
}else if(a[i][j]=='#'){
f[i][j]=true;
}
}
}
vis[sx][sy]=true;
dfs(sx,sy,0);
if(flag)cout<<ans;
else cout<<-1;
return 0;
}
WA80...
张皓轩在2021-09-24 20:45:47追加了内容
canfei
0
0
0
0
0
0
0
0