不知道这为什么跟数据结构有关系
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;
}
#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;
}
相关文章推荐
- 你不知道电流互感器二次侧为什么不能开路
- 11374 - Airport Express 一直都是wa不知道为什么
- 你知道什么是数据结构吗?反正我不知道。
- 不知道为什么。郁闷中....
- 为什么你的手机会越用越卡,那是你不知道这些
- 装了一下ubuntu,还不错,装了一些应用,就是不知道为什么steam打不开。。
- 不知道为什么,就是佩服这个牛人!
- 不知道为什么心情总是不好
- 如果业界中不用高级算法和数据结构,那为什么还要学?
- 刚看了一篇文章,不知道为什么.就烦闷起来
- 为什么要使用栈这种数据结构
- 为什么Android应用装到了手机上,但是没有图标,之前有图标但是打不开,也不知道为啥
- 子类用一个名为subitems的数组属性保存父类对象,为什么不能获取父类对象的信息呢???在main函数中subitems为空,不知道为什么。
- 本来是想用集合的方式来读取request.form 信息的,但是不知道为什么,啥都不显示,麻烦给点高见蛮!!
- 为什么JBUILDER 不知道为什么就无法打开了!用这个解决方法!
- 数据结构和算法为什么这么重要?
- 懂配置Java开发环境却不知道为什么
- 不知道的小常识(一) 为什么手机短信长度限制70个中文、160个英文
- 不知道为什么,很多优秀的产品知道人确很少
- N个为什么系列--1.为什么要学习数据结构?