/* 走迷宫:找出全部路径*/ /* allroadmaze_20050128.c (recursive)*/ /* 2005-1-28 */ /* 输出结果到文本文件"c:\route.txt"*/ /* 首先输出01表示的迷宫地图*/ /* 然后输出全部可行通路*/ /* 迷宫地图以0表示空格1表示障碍*/ /* 横坐标从左至右为0 1 2 3...*/ /* 纵坐标从上至下为0 1 2 3...*/ #include <stdlib.h> #include <time.h> #include <math.h> #include <stdio.h> #include "conio.h" #define N 5 #define M 5 #define MAXLEN M*N int time1=0; int bg[M][N]; int aa[M][N]; struct pace{ int dir; int ri; int rj; }road[MAXLEN]; FILE *fp; int length=0; int dj[]={1,0,-1,0}; int di[]={0,1,0,-1}; void makebg(int,int); int go(int ,int ,int); int main(){/* main()开始 */ int step=20; int len=10; int size=20; int x=0,y=0; int i=0; makebg(M,N); if((fp=fopen("c:\route.txt","w"))==NULL){ printf("Cannot open teh file!n"); return(-1); } outputmap(); go(0,0,0); getch(); fclose(fp); } /* main()结束 */
/* 随机生成代表迷宫地图的数组 */ void makebg(int a,int b){ int i,j; int ran; int direc; /* 初始化迷宫地图 */ for(i=0;i<a;i++) for(j=0;j<b;j++) bg[i][j]=1; /* 随机生成迷宫通路 */ randomize(); i=j=0;direc=2; while(1){ bg[i][j]=0; if(i>=M-1&&j>=N-1)break; ran=(int)rand()*4; if(ran<1){ if(direc!=1&&i<a-1){ i++; direc=3; } <
|