指引网

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

用c++实现的迷宫递归算法

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

 

程序已经被vc6.0调试过,包括一个头文件maze.h和一个主程序

再附加一个说明文件格式的代码

#ifndef MAZE_H
#define MAZE_H

#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>

typedef struct
{int left;
 int forward;
 int right;
}Intersection;

class Maze
{private:
  int mazesize;
  int EXIT;
  Intersection *intsec;
public:
 Maze(char*);
 int TraverseMaze(int);
};

Maze::Maze(char *filename)
{ifstream fin;
 int i;
 fin.open(filename,ios::in|ios::nocreate);
 if(!fin)
 {cerr<<"the maze dose not exist"<<endl;
  exit(-1);
 }

 fin>>mazesize;
 intsec=new Intersection[mazesize+1];
 for(i=1; i<=mazesize;i++)
  fin>>intsec[i].left>>intsec[i].forward>>intsec[i].right;
 fin>>EXIT;
 fin.close();
}

int Maze::TraverseMaze(int intsecvalue)
//0 denote for no availble road exist
{
 if(intsecvalue>0)
{if(intsecvalue==EXIT)
 {cout<<intsecvalue<<' ';
  return 1;
 }
//go to left
 else if(TraverseMaze(intsec[intsecvalue].left))
 {cout<<intsecvalue<<' ';
  return 1;
 }

 else if(TraverseMaze(intsec[intsecvalue].forward))
 {cout<<intsecvalue<<' ';
  return 1;
 }

 else if(TraverseMaze(intsec[intsecvalue].right))
 {cout<<intsecvalue<<' ';
  return 1;
 }
}
 return 0;
}
#endif

#include "maze.h"
void main()
{char filename[32];
 //string filename;
 cout<<"enter the data file name:";
  cin>>filename;
 Maze M(filename);
 if(M.TraverseMaze(1))
  cout<<endl<<"you are free"<<endl;
  else cout<<endl<<"you are trapped"<<endl;
}

6
0 2 0
3 5 6
0 0 4
0 0 0
0 0 0
7 0 0
7

 

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