满意答案
xfvmq3890
2013.11.17
采纳率:51% 等级:12
已帮助:9028人
//迷宫实现 。。。
#include
using namespace std;
class Stack
{
public:
void clear();
bool push(const int item);
bool pop(int & item);
bool Top(int & item);
bool isEmpty();
bool isFull();
};
class arrStack: public Stack
{
private:
int mSize;
int top;
int *st;
public:
arrStack(int size)
{
mSize=size;
top=-1;
st=new int[mSize];
}
arrStack()
{
top=-1;
}
~arrStack()
{
delete []st;
}
void clear()
{
top=-1;
}
bool isEmpty()
{
if(top==-1)
return true;
else
return false;
}
bool push(const int item)
{
if(top==mSize-1)
{
cout<
return false;
}
else
{
st[++top]=item;
return true;
}
}
bool pop(int &item)
{
if(top==-1)
{
cout<
return false;
}
else
{
item=st[top--];
return true;
}
}
bool Top(int &item)
{
if(top==-1)
{
cout<
return false;
}
else
{
item=st[top];
return true;
}
}
};
void main()
{
arrStack ly(100);
int i=1,j=1,cur,m,n;
int a[9][9];
while(i==0||j==0)
{
a[i][j]=0; // =0为墙
}
a[1][3]=a[1][7]=a[2][3]=a[2][7]=a[3][4]=a[3][5]=a[3][6]=a[4][2]=a[4][3]=a[4][4]=a[5][4]=0;
a[6][2]=a[6][6]=a[7][2]=a[7][3]=a[7][4]=a[7][6]=a[7][7]=a[8][1]=0;
a[1][1]=1;
do
{
if(a[i][j]!=0&&a[i][j]!=2&&a[i][j]!=3)
{
ly.push(i);
ly.push(j);
a[i][j]=3; //走过为3
if(i==8&&j==8)
{
cout<
break;
}
else
{
i=i;
j++;
}
}
else
{
if(!ly.isEmpty()&&(a[i+1][j-1]!=0)&&(a[i+1][j-1]!=2))
{
i++;
j--;
}
else
{
i=i;
j--;
a[i][j+1]=2;
}
if(((!ly.isEmpty()&&(a[i+1][j]!=0)&&(a[i+1][j]!=2)&&(a[i+1][j]!=3))||(!ly.isEmpty()&&(a[i][j+1]!=0)&&(a[i][j+1]!=2)&&a[i][j+1]!=2)||((!ly.isEmpty()&&a[i-1][j]!=0)&&(a[i-1][j])!=2&&(a[i-1][j])!=3))||((!ly.isEmpty()&&a[i][j-1]!=0)&&(a[i][j-1]!=2)&&(a[i][j-1])!=3))
{}
//if(!ly.isEmpty()&&(((a[i+1][j]==0)||(a[i+1][j]==2)||(a[i+1][j]==3))&&((a[i][j+1]==0)||(a[i][j+1]==2)||(a[i][j+1]==3))&&((a[i-1][j]==0)||(a[i-1][j])==2)||(a[i-1][j]==3)))
else
{
ly.pop(m);
ly.pop(n);
i=m;
j=n;
a[i][j]=2; //已走不通为2
ly.Top(m);
ly.Top(n);
i=n;
j=m;
}
}
}while(1);
cout<
do
{
ly.pop(m);
ly.pop(n);
cout<
}while(!ly.isEmpty());
cout<
}
整不好你跟我都一个学校。。。
00分享举报