Chtholly_is_cute @ 2024-12-21 15:41:01
code:
#include<bits/stdc++.h>
using namespace std;
const int N=35;
int a[N][N],vis[N][N];
int dx[9],dy[9];
int m,n,m1,m2;
struct move{int x,y,step;};
queue<move>q;
int main(){
cin>>m>>n>>m1>>m2;
int sx,sy,ex,ey;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]==3)sx=i,sy=j;
if(a[i][j]==4)ex=i,ey=j;
}
}
dx[1]=a,dy[1]=b;
dx[2]=a,dy[2]=-b;
dx[3]=-a,dy[3]=b;
dx[4]=-a,dy[4]=-b;
dx[5]=b,dy[5]=a;
dx[6]=b,dy[6]=-a;
dx[7]=-b,dy[7]=a;
dx[8]=-b,dy[8]=-a;
move x={sx,sy,0};
vis[sx][sy]=1;
q.push(x);
while(!q.empty()){
x=q.front();
if(x.x==ex&&x.y==ey){
cout<<x.step;
return 0;
}
q.pop();
for(int i=1;i<=8;i++){
int xx=x.x+dx[i],yy=x.y+dy[i];
if(xx<1||xx>m||yy<1||yy>n)continue;
if(vis[xx][yy]==1||a[xx][yy]==0||a[xx][yy]==2)continue;
x={xx,yy,x.step+1};
q.push(x);
vis[xx][yy]=1;
}
}
}
by Bai_R_X @ 2024-12-21 15:45:54
两个问题,
第一:move
结构体与std::move
重名,修改即可
第二:那些a
和b
是什么,a[1][1]
什么的吗?还是sx
和sy
或ex
、ey
?改一下。