一聚教程网:一个值得你收藏的教程网站

热门教程

走迷宫:找出全部路径

时间:2022-07-02 11:00:45 编辑:袖梨 来源:一聚教程网


 

/* 走迷宫:找出全部路径*/
/* allroadmaze_20050128.c (recursive)*/
/* 2005-1-28 */
/* 输出结果到文本文件"c:route.txt"*/
/* 首先输出01表示的迷宫地图*/
/* 然后输出全部可行通路*/
/* 迷宫地图以0表示空格1表示障碍*/
/*   横坐标从左至右为0 1 2 3...*/
/*   纵坐标从上至下为0 1 2 3...*/
#include
#include
#include
#include
#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        for(j=0;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                i++;
                direc=3;
            }