n.
迷宫, 曲径
错综复杂, 难解的事物曲折难以摆脱的困难[处境]
【解】(内耳的)迷路
迷宫环(式密封), 曲径环(式密封)封平圈
maze
[meiz]
n
迷宫;错综复杂的曲径
#include <stdio.h>#define MaxSize 100
#define M 8
#define N 8
struct sqqueue {
int i,j
int pre
} qu[MaxSize]
int front=-1,rear=-1
int mg[M+2][N+2]= {
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,0,0,1,1,0,0,1},
{1,0,1,1,1,0,0,0,0,1},
{1,0,0,0,1,0,0,0,0,1},
{1,0,1,0,0,0,1,0,0,1},
{1,0,1,1,1,0,1,1,0,1},
{1,1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1}
}
void print(int front) {
int k=front,j,ns=0
printf("\n")
do {
j=k
k=qu[k].pre
qu[j].pre=-1
} while(k!=0)
printf("ÃÔ¹¬Â·¾¶ÈçÏÂ:\n")
k=0
while(k<MaxSize) {
if(qu[k].pre==-1) {
ns++
printf("\t(%d,%d)",qu[k].i,qu[k].j)
if(ns%5==0)
printf("\n")
}
k++
}
printf("\n")
}
void mgpath(int x1,int y1,int x2,int y2) {
int i,j,find=0,di
rear++
qu[rear].i=x1
qu[rear].j=y1
qu[rear].pre=-1
mg[1][1]=-1
while(front!=rear&&!find) {
front++
i=qu[front].i
j=qu[front].j
if(i==x2&&j==y2) {
find=1
print(front)
}
for(di=0 di<4 di++) {
switch(di) {
case 0:
i=qu[front].i-1
j=qu[front].j
break
case 1:
i=qu[front].i
j=qu[front].j+1
break
case 2:
i=qu[front].i+1
j=qu[front].j
break
case 3:
i=qu[front].i
j=qu[front].j-1
break
}
if(mg[i][j]==0) {
rear++
qu[rear].i=i
qu[rear].j=j
qu[rear].pre=front
mg[i][j]=-1
}
}
}
if(!find)
printf("²»´æÔÚ·¾¶!\n")
}
int main() {
mgpath(1,1,8,8)
}
入队条件是mg[i][j]==0
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)