新手启示者
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node{
int x,y;
};
queue<node> q;
int x1,y1,x2,y2;
unsigned long long f[25][25];
int dir[15][2]={{0},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,-2},{-2,2},{2,-2},{2,2}};
void bfs(){
while(!q.empty()){
node h=q.front();
q.pop();
for(int i=1;i<=12;i++){
int dx=h.x+dir[i][0],dy=h.y+dir[i][1];
if(dx>=1&&dy>=1&&dx<=20&&dy<=20&&f[dx][dy]==-1){
f[dx][dy]=f[h.x][h.y]+1;
q.push((node){dx,dy});
}
}
}
}
int main(){
cin>>x1>>y1>>x2>>y2;
memset(f,-1,sizeof(f));
f[1][1]=0;
q.push((node){1,1});
bfs();
cout<<f[x1][y1]<<endl<<f[x2][y2];
return 0;
}
...............
汪宇航在2021-04-26 18:16:17追加了内容
@赵逸凡 @赵睿泽
@陈曦 @曹博扬
@李瑞曦 @董宇昊
@汪恺恒 @谭迪元
资深守护
高举白旗(不会)
赵睿泽在2021-04-26 20:29:23追加了内容
求助6467
80WA
#include<iostream>
using namespace std;
int p1,q1,p2,q2,s1,s2;
struct node{
int x,y,step;
}que[51];
int nt[13][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1},{-2,-2},{-2,2},{2,-2},{2,2}};
int book[101][101];
int head=1,tail=1,flag1=0,flag2=0;
void bfs(){
que[tail].x=1;
que[tail].y=1;
que[tail].step=0;
tail++;
while(head<tail){
for(int i=0;i<12;i++){
int tx=que[head].x+nt[i][0];
int ty=que[head].y+nt[i][1];
if(tx>=1&&tx<=20&&ty>=1&&ty<=20&&book[tx][ty]==0){
book[tx][ty]=1;
que[tail].x=tx;
que[tail].y=ty;
que[tail].step=que[head].step+1;
tail++;
}
if(tx==q1&&ty==p1&&flag1==0){
flag1=1;
s1=que[tail-1].step;
}
if(tx==q2&&ty==p2&&flag2==0){
flag2=1;
s2=que[tail-1].step;
}
}
if(flag1==1&&flag2==1){
break;
}
head++;
}
return;
}
int main(){
cin>>p1>>q1>>p2>>q2;
bfs();
cout<<s1<<endl<<s2;
return 0;
}
赵睿泽在2021-04-26 20:31:47追加了内容
@汪恺恒
赵睿泽在2021-04-26 20:41:39追加了内容
而且,你是不是……
https://wenda.codingtang.com/questions/13316/
代码怎么一模一样啊……