用队列实现迷宫问题:
以下为代码(结果为输出路径)
#include
using namespace std;
typedef struct{
int x;
int y;
int cur;
}link;
void print(link q[200],int front){
cout<<"所经过的路径为:"<
while(front!=0){
cout<
front=q[front].cur;
}//while
void find(link q[200],int p[10][10],int p1[5],int p2[5]){
int i,j,x,y,k,front,rear,find=1;
x=q[0].x=1;
y=q[0].y=1;
q[0].cur=0;
front=rear=1;
while(find==1){
for(k=1;k<=4;k++){
i=x+p1[k];
j=y+p2[k];
if(p[i][j]==0){
q[rear].x=x;
q[rear].y=y;
q[rear].cur=rear+1;
p[x][y]=-1;
x=i;y=j;
rear++;
find=1;break;}
if(k==4&&p[i][j]!=0){
i=i-p1[k];
j=j-p2[k];
p[i][j]=-1;
x=q[rear-1].x;
y=q[rear-1].y;
rear--;
find=1;break;}
if(x==8&&y==8){
q[rear].x=x;
q[rear].y=y;
q[rear].cur=0;
print(q,front);
find=0;break;}
}//for
if(rear==0)
{cout<<"没有一条路可以到达目的地"<
find=0;}
}//while
}
int main(int argc, char* argv[]){
link q[200];
int p1[5];
int p2[5];
p1[1]=0;p1[2]=1;p1[3]=0;p1[4]=-1;p2[1]=1;p2[2]=0;p2[3]=-1;p2[4]=0;
int p[10][10]={
1,1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,0,0,0,1,
1,0,0,0,1,1,1,1,0,1,
1,1,0,0,0,1,1,1,0,1,
1,0,1,0,0,0,1,1,0,1,
1,0,1,1,0,0,0,1,0,1,
1,0,1,0,1,0,0,0,1,1,
1,0,1,1,1,1,0,0,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1};
find(q,p,p1,p2);
printf("Hello World!\n");
return 0;
}//main
¥29.8
¥9.9
¥59.8