迷宮問題-非再帰アルゴリズム
2052 ワード
1.順次スタックヘッダファイル
2.順次スタックソースファイル
3.迷宮関数と主関数を歩く:
# include
using namespace std;
struct items{
int x,y;
char* dir;
};
class SeqStack{ //
private:
int maxSize; //
int top; // : ,
items* elements; //
public:
SeqStack(int sz=50); // : sz
~SeqStack(){delete[] elements;} // :
void Push(const items& x); // : x
bool Pop(items& x); // : x, ;
bool isEmpety(){return (top==-1)?true:false;} //
bool isFull(){ return (top+1==maxSize)?true:false;} //
friend ostream& operator<
2.順次スタックソースファイル
# include
# include
# include"SeqStack.h"
using namespace std;
SeqStack::SeqStack(int sz):top(-1),maxSize(sz){ // :top=-1
elements=new items[maxSize];
assert(elements!=NULL); //assrt : ()
}
void SeqStack::Push(const items& x){ //
elements[++top]=x;
}
bool SeqStack::Pop(items& x){ //
if(isEmpety()) return false;
x=elements[top--];
return true;
}
ostream& operator<
3.迷宮関数と主関数を歩く:
# include
# include"SeqStack.h"
void Path(int x,int y,items move[8],int Maze[][4],int mark[][4]);
using namespace std;
const int m=2,p=2;
void main(){
int i,j;
int Maze[m+2][p+2]; //
int mark[m+2][p+2]; //
items move[8]={{-1,0,"N"},{-1,1,"NE"},{0,1,"E"},{1,1,"SE"},
{1,0,"S"},{1,-1,"SW"},{0,-1,"W"},{-1,-1,"NW"}}; //
for(i=0;i>Maze[i][j];// :0,1 , 0, 1;
for(i=0;i