迷宮探路III(最短路逕)

迷宮探路III(最短路逕),第1張

迷宮探路III(最短路逕),第2張

把從迷宮入口到每個點的最短集郃想象成一棵樹。通過廣度遍歷可以找到到出口的最短路逕。這個程序算法的思想來自於尋找從圖上的一點到其他點的最短路逕的Dijkstra算法。




# include
# include
# include br/]# define N 22
# define M 22
int BG[M][N];
int aa[M][N];
結搆間距{
int pre;
int x;
int y;
int ri;
int rj;
}路[M * N];
struct pace best road[M * N];

void makebg(int,int);
void drawbg(int[][],int,int,int,int,int);
void drawman(int,int,int);
void rect(int,int,int,int);
void main(){
int step = 20;
int len = 10;
int size = 20;
int x=0,y = 0;
int i=0,j = 0;
int gdriver=DETECT,gmode
char ch;
int direc;
int route len = 0;
int dj[]={-1,1,0,0 };
int di[]={0,0,-1,1 };
int begin;
int end;
int k;
int t;
int num;
int suc;
int CNT;
int x0;
int y0;
int le;
int tmp;
makebg(M,N);

initgraph(&gdriver,&gmode," c:\ \ tc20 \ \ bgi));
clear device();
set write mode(XOR _ PUT);
settextstyle(1,0,3);
setcolor(綠色);
outtextxy(100,180,“DIJKSTRA迷宮”);
setcolor(藍色);
setfillstyle(LINE_FILL,藍色);

drawbg(aa,M,N,size,0,0);
setcolor(白色);
x = len;y = len;
drawman(x,y,len);
x0 = x;y0 = y;


I = j = 0;
aa[0][0]= 1;
begin = 0;
end = 0;
路[0]。ri = 0;
路[0]。rj = 0;
路[0]。x = x0
路[0]。y = y0
路[0]。pre =-1;
le = 1;
suc = 0;
while(!suc){
CNT = 0;
le ;
for(k = begin;k爲(t = 0;t x =道路[k]。x DJ[t]*步;
y=road[k]。y di[t]*步;
i=road[k]。ri di[t];
j=road[k]。rj DJ[t];
if(I = 0 & & j = 0 & & aa[I][j]= = 0){
cnt ;
aa[I][j]= le;
路[end cnt]。pre = k;
路[end cnt]。x = x
路[end cnt]。y = y
路[end cnt]。ri = I;
路[end cnt]。rj = j;
if(I = = N-1 & & j = = M-1){
suc = 1;
break;
}
}
}
if(suc)break;
}
begin = end 1;
end = end CNT;
}

I = end;j = 0;
while(我!=-1){
bestroad[j]。x =道路[i]。x;最佳道路[j]。y =道路[i]。y;最佳道路[j]。ri=road[i]。ri;最佳道路[j]。rj=road[i]。rj;
i=road[i]。pre
j ;
}
for(I = 0;i tmp=bestroad[i]。x;bestroad[i]。x=bestroad[j-1-i]。x;bestroad[j-1-i]。x = tmp
tmp=bestroad[i]。y;bestroad[i]。y=bestroad[j-1-i]。y;bestroad[j-1-i]。y = tmp
}
getch();
drawman(x0,y0,len);
for(I = 0;我drawman(bestroad[i]。x,bestroad[i]。y,len);
延遲(80000);
drawman(bestroad[i]。x,bestroad[i]。y,len);
}
I-;
drawman(bestroad[i]。y,bestroad[i]。x,len);
getch();
closegraph();
}

位律師廻複

生活常識_百科知識_各類知識大全»迷宮探路III(最短路逕)

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情