问题标题: 酷町堂:3706

0
0
已解决
汪艾辰
汪艾辰
高级光能
高级光能

#include<iostream>

using namespace std;

int n,m,sx,sy,ex,ey,cnt,mx=0x3f3f3f3f; bool map[25][25];

int dis[8][2]={{-1,-1},{-1,1},{1,-1},{1,1},{1,0},{-1,0},{0,1},{0,-1}};

int vis[25][25];

void dfs(int x,int y){

//cout<<x<<" "<<y<<"\n";

if(x==ex&&y==ey){

mx=min(cnt,mx);

return ;

}

for(int i=0;i<8;i++){

int nx=x+dis[i][0];

int ny=y+dis[i][1];

if(nx>=0&&nx<=n&&ny>=0&&ny<=m&&!vis[nx][ny]&&!map[nx][ny]){

vis[nx][ny]=1;

cnt++;

dfs(nx,ny);

cnt--;

vis[nx][ny]=0;

}

}

}

int main(){

cin>>n>>m; cin>>sx>>sy>>ex>>ey;

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

cin>>map[i][j];

}

}

if(map[ex][ey]==1||map[sx][sy]==1){

cout<<-1;

return 0;

}

vis[sx][sy]=1;

dfs(sx,sy);

cout<<mx;

return 0;

}


0
0
0
0
0
我要回答