您的位置:首页 > 理论基础 > 数据结构算法

不知道这为什么跟数据结构有关系

2008-03-16 12:19 183 查看
学了栈,老师让我们写迷宫程序,我想了好久还是不明白,它写栈有什么关系...以下是我的程序,...

#include<iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
char**a;
int x;
int y;

cout<<"<--请输入迷宫的行数与列数-->"<<endl;
cin>>x>>y;
a=new char*[x+2];
for(int i=0;i<(x+2);i++)
a[i]=new char[y+2];
cout<<"<--请输入迷宫(0表示通路,*表示墙)-->"<<endl;
for(int i=1;i<=x;i++)
for(int j=1;j<=y;j++)
cin>>a[i][j];
for(int i=0;i<(x+2);i++)
{
a[i][0]='*';
a[i][y+1]='*';
}
for(int j=0;j<(y+2);j++)
{
a[0][j]='*';
a[x+1][j]='*';
}
a[1][0]='0';
a[x][y+1]='0';
cout<<"<--你输入的迷宫为:"<<endl;
for(int i=0;i<(x+2);i++)
{
for(int j=0;j<(y+2);j++)
cout<<a[i][j];
cout<<endl;
}

if(a[1][1]!='0'||a[x][y]!='0')
{
cout<<"<--此迷宫无解-->";
return 0;
}
int i=1;
int j=0;
cout<<i<<","<<j;
while(a[x][y+1]!='.')
{
if(a[i][j+1]!='.'&&a[i][j+1]!='*'&&a[i][j+1]!='+')
{
a[i][j]='.';
j=j+1;
cout<<"右";
cout<<i<<","<<j;
}
else if(a[i-1][j]!='.'&&a[i-1][j]!='*'&&a[i-1][j]!='+')
{
a[i][j]='.';
i=i-1;
cout<<"上";
cout<<i<<","<<j;
}
else if(a[i][j-1]!='.'&&a[i][j-1]!='*'&&a[i][j-1]!='+')
{
a[i][j]='.';
j=j-1;
cout<<"左";
cout<<i<<","<<j;
}
else if(a[i+1][j]!='.'&&a[i+1][j]!='*'&&a[i+1][j]!='+')
{
a[i][j]='.';
i=i+1;
cout<<"下";
cout<<i<<","<<j;
}
else
{
a[i][j]='+';
cout<<"返回";
if((a[i][j+1]!='*')&&(a[i][j+1]!='+')) j=j+1;
else if((a[i+1][j]!='*')&&(a[i+1][j]!='+')) i=i+1;
else if((a[i][j-1]!='*')&&(a[i][j-1]!='+')) j=j-1;
else if((a[i-1][j]!='*')&&(a[i-1][j]!='+')) i=i-1;
x=i;y=j;
}
if(i==1&&j==0) break;
}
if(i==1&&j==0)
{
cout<<"--------此迷宫没有出路------------"<<endl;
}
else
{
cout<<endl<<"------找到迷宫出路,如图所示:----------"<<endl;
for(int k=0;k<x+2;k++)
{
for(int h=0;h<y+2;h++)
cout<<a[k][h]<<" ";
cout<<endl;
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: