2
0
0
0
0
徐子宸
中级天翼
中级天翼
struct coord{
int x,y,count;///x表示横坐标,y表示纵坐标,count表示行走步数
};
int BFS(int x,int y){
for(int i=1;i<=100;i++){
for(int j=1;j<=100;j++){
used[i][j]=false;
}
}
queue<coord> q;
q.push(coord{x,y,0});
used[x][y]=true;
while(!q.empty()){///判断是否有解
coord temp =q.front();
q.pop();
if(temp.x==1&&temp.y==1)return temp.count;///如果(x,y)=(1,1)就返回最优解
for(int i=0;i<12;i++){///尝试每种可能
int nx=temp.x+dir[i][0];
int ny=temp.y+dir[i][1];///生成新的坐标
if(!used[nx][ny]&&canJump(nx,ny)){///这里的canJump判断是否越界,杨老师应该可以自己写
q.push((coord){nx,ny,temp.count+1});///将一种可能性压入队列
used[nx][ny]=true;
}
}
}
}
///以下主程序不再展出
0
0
0
0
0
0
0
0
汪恺恒
中级启示者
中级启示者
考古大队前来报到
用bfs即可
/*STL版*/
void bfs(){
memset(f,-1,sizeof(f));
f[1][1]=0;
q.push((node){1,1});
while(!q.empty()){
node head=q.front();
q.pop();
for(int i=1;i<=12;i++){
int dx=head.x+dir[i][0],dy=head.y+dir[i][1];
if(dx>=1&&dy>=1&&dx<=100&&dx<=100&&f[dx][dy]==-1){
f[dx][dy]=f[head.x][head.y]+1;
q.push((node){dx,dy});
}
}
}
}
0
0
0
0
0
0
0