迷宫问题求解,我写的程序有问题?
本人C才入门 我写了这段程序 但是运行不了 高手请帮忙查查错误 功能是:输入任意大小迷宫,用非递归方法求出一条走出迷宫的路径 并将路径输出
#include"linkstack.cpp"
#include"iostream.h"
struct node
{
int row;
int col;
int dir;
};
void main()
{
const int move[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,1}};
int row=8,col=11,start=1,end=9,i,j,k;
{
cout<<"输入行数和列数:"
cin>>row>>col;
row+=2;col+=2;
cout<<"请一行一行输入迷宫:\n";
for(i=1;i<row-1;i++)
{
cout<<"row"<<i":\t";
for(j=1;j<col-1;j++)
cin>>maze[i][j];
}
cout<<"请输入开始的列号和结束的列号:";
cin>>start>>end;
for(i=0;i<row;i++)
maze[i][0]=maze[i][col-1]=1;
for(i=0;i<col;i++)
maze[0][i]=maze[row-1][i]=1;
}
cout<<"maze:\n";
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
cout<<maze[i][j]<<" ";cout<<"\n";
}
cout<<"\n";
linkstack<node>stack;
node mynode;
mynode.row=1;
mynode.col=start;
mynode.dir=2;
stack.push(mynode);
int g,h,find=0;
while(!stack.isempty()&&!find)
{
stack.pop(mynode);
i=mynode.row;j=mynode.col;k=mynode.dir;
while(k<8)
{
g=i+move[k][0];
h=j+move[k][1];
if(g==row-2&&h==end&&maze[g][h]==0)
{
find=1;
maze[g][h]=2;break;
}
if(maze[g][h]==0)
{
maze[g][h]=2;
mynode.row=g;mynode.col=h;mynode.dir=k;
stack.push(mynode);
i=g;
j=h;
k=0;continue;
}
k=k+1;
}
}
if(find)
{
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
cout<<maze[i][j]<<" ";
cout<<"\n"
}
}
else cout<<"no path!\n";
}