简单bfs路径问题
路径用递归求出来
L - 迷宫问题
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include<iostream>
using namespace std;
int x1[4]={1,-1,0,0};
int y11[4]={0,0,1,-1};
int vis[20][20],a[20][20];
struct node{
int x,y;
}tmp1,tmp2,path[105][105];
queue<node>q;
int check(int x,int y){
if(x<0||y<0||x>4||y>4) return 0;
if(vis[x][y]) return 0;
if(a[x][y]) return 0;
return 1;
}
void f(int x,int y){
if(x==0&&y==0){
return ;
}
f(path[x][y].x,path[x][y].y);
printf("(%d, %d)\n",x,y);
}
void bfs(){
tmp1.x=tmp1.y=0;
vis[0][0]=1;
q.push(tmp1);
while(!q.empty()){
tmp1=q.front() ;
q.pop();
if(tmp1.x==4&&tmp1.y==4){
cout<<"(0, 0)"<<endl;
f(4,4);
return;
}
for(int i=0;i<4;i++){
tmp2.x=tmp1.x+x1[i];
tmp2.y=tmp1.y+y11[i];
if(check(tmp2.x,tmp2.y)){
vis[tmp2.x][tmp2.y] = 1;
q.push(tmp2);
path[tmp2.x][tmp2.y].x = tmp1.x;
path[tmp2.x][tmp2.y].y = tmp1.y;
}
}
}
}
int main(){
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
cin>>a[i][j];
}
}
memset(vis,0,sizeof(vis));
bfs();
return 0;
}