指引网

当前位置: 主页 > 编程开发 > C >

走迷宫:找出全部路径

来源:网络 作者:佚名 点击: 时间:2017-07-19 22:59
[摘要] 

 

/* 走迷宫:找出全部路径*/
/* 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;
            }

<
------分隔线----------------------------