c++-一段代码,迷宫问题,求大神加注释

问题描述

一段代码,迷宫问题,求大神加注释 5C
maze::maze()
{
int ij;
cout<<""请输入迷宫规模,长、宽,以空格隔开:"";
cin>>Height>>Width;
a = new int*[Height];
for(i = 0;i != Height;i++)
{
a[i] = new int[Width];
}
rd = new Road*[Height*Width];
Road *temp = new Road[Height*Width];
cout<<""请输入迷宫矩阵:"";
cout<<endl;
for(i = 0;i != Height;i++)
{
for(j = 0;j != Width;j++)
{

        cin>>a[i][j];        rd[(j+1)+i*Width-1] = &temp[(j+1)+i*Width-1];        rd[(j+1)+i*Width-1]->state = a[i][j];        rd[(j+1)+i*Width-1]->num = (j+1)+i*Width-1;        //cout<<rd[(j+1)+i*n-1]->state;    }}for(i = 0;i != Height;i++){    for(j = 0;j != Width;j++)    {        if(i == 0)        {            if(j == 0)            {                rd[(j+1)+i*Width-1]->N = NULL;                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = NULL;                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }            else if(j == Width-1)            {                rd[(j+1)+i*Width-1]->N = NULL;                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = NULL;            }            else            {                rd[(j+1)+i*Width-1]->N = NULL;                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }        }        else if(i == (Height-1))        {            if(j == 0)            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = NULL;                rd[(j+1)+i*Width-1]->W = NULL;                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }            else if(j == Width-1)            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = NULL;                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = NULL;            }            else            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = NULL;                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }        }        else        {            if(j == 0)            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = NULL;                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }            else if(j == Width-1)            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = NULL;            }            else            {                rd[(j+1)+i*Width-1]->N = rd[(j+1)+(i-1)*Width-1];                rd[(j+1)+i*Width-1]->S = rd[(j+1)+(i+1)*Width-1];                rd[(j+1)+i*Width-1]->W = rd[(j-1+1)+i*Width-1];                rd[(j+1)+i*Width-1]->E = rd[(j+1+1)+i*Width-1];            }        }    }}cout<<""迷宫矩阵:""<<endl;for(i = 0;i != Height;i++){    for(j = 0;j != Width;j++)    {        cout<<a[i][j]<<""t"";    }    cout<<endl;}cout<<endl;cout<<""迷宫节点序号矩阵:""<<endl;for(i = 0;i != Height;i++){    for(j = 0;j != Width;j++)    {        cout<<rd[(j+1)+i*Width-1]->num<<""t"";    }    cout<<endl;}cout<<endl;cout<<""请输入入口序号:"";cin>>innum;cout<<""请输入出口序号:"";cin>>outnum;if(rd[innum]->state == 0){    if(getout(rd[innum]->num)>0)    {        cout<<rd[innum]->num<<""<--进入""<<endl;    }    else    {        cout<<""没有出口!""<<endl;    }}else{    cout<<""没有此入口!""<<endl;}

}
int maze::getout(int num) //shendu
{
rd[num]->flog = 1;
if(num == outnum)
{
cout<<""出口<--"";
return 1;
}
else if(rd[num]->N != NULL && rd[num]->N->state == 0 && rd[num]->N->flog != 1 && getout(rd[num]->N->num)>0)
{
cout<N->num<<""<--"";
return rd[num]->N->num;
}
else if(rd[num]->S != NULL && rd[num]->S->state == 0 && rd[num]->S->flog != 1 && getout(rd[num]->S->num)>0)
{
cout<S->num<<""<--"";
return rd[num]->S->num;
}
else if(rd[num]->W != NULL && rd[num]->W->state == 0 && rd[num]->W->flog != 1 && getout(rd[num]->W->num)>0)
{
cout<W->num<<""<--"";
return rd[num]->W->num;
}
else if(rd[num]->E != NULL && rd[num]->E->state == 0 && rd[num]->E->flog != 1 && getout(rd[num]->E->num)>0)
{
cout<E->num<<""<--"";
return rd[num]->E->num;
}
else
{
return -1;
}
}

解决方案

csdn如何提问问题,我找了整个页面,半个钟都没找到

时间: 2024-12-29 16:37:27

c++-一段代码,迷宫问题,求大神加注释的相关文章

刚接触IO流有一段代码不理解求大神给我说明一下

问题描述 刚接触IO流有一段代码不理解求大神给我说明一下 红色框框标记的是不明白的. 再次表示感谢! 解决方案 Java 下 IO 中Reder 和 InputStream 分别是以字符和字节的形式来完成数据的读取的,然而返回值确是 int 类型的数据,这样做的核心目的只是要取到到一个 int 类型下的 -1 来表示数据流的末尾. 此次使用的read(b,0,512)是将文件中的数据读取到字节缓冲区b中,并返回读取到的字节的总数.循环读取文件内容到缓冲区,并写入另一个文件中.循环处理直到到达读取

c++-求大神加注释,小弟看不懂

问题描述 求大神加注释,小弟看不懂 int main(){ cout<<""-----迷宫-----""< maze m; return 0;}maze::maze(){ int ij; cout cin>>Height>>Width; a = new int*[Height]; for(i = 0;i != Height;i++) { a[i] = new int[Width]; } rd = new Road*[Heig

java-这段代码没看明大神们来帮看一下

问题描述 这段代码没看明大神们来帮看一下 这段代码没看明大神们来帮忙看下,尤其是if(flag)这块,还有while(true)为什么是死循环呢?小弟自学求大神说的详细一点. 解决方案 首先flag是实例变量,程序在生成你的测试类的实例时,会为实例变量赋初始值,boolean类型的默认值为false,在上面的程序中flag的值为false,程序走else分支,然后遇到while语句,while语句的格式为while(boolean){statements},意思是先判断boolean的值,如果为

c#-C#写一段监视程序,求大神指教

问题描述 C#写一段监视程序,求大神指教 当计算器点击log时,监测程序检测到信息,并在form窗口上显示出计算器点击的信息,求大神指教,谢谢 解决方案 参考spy++的代码,拦截wm_mousedown消息

服务器-clustrmaps代码问题,求大神帮忙看一下

问题描述 clustrmaps代码问题,求大神帮忙看一下 在clustrmaps上生成了一段代码 但是放到服务器上只能生成 但是如果将代码放到w3school模拟就能正确运行 有没有大神帮忙看一下~~~ 解决方案 代码是 ``` 解决方案二: 代码是 ``` 解决方案三: 代码是 ``` 解决方案四: script type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2

c++-C#与C++位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导

问题描述 C#与C++位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导 C#中位图保存方式与C++中位图保存方式的区别是什么?如何将C#中位图buffer正确传到C++代码中?求大神指导 解决方案 C++中位图分为32/24/16位的三种位图数据存储方式,很多时候C++中主要使用32位和24位,如果你没有特别声明的话.C#中的位图 也多数是32位的.这些所谓的32位或者24位说的是位图中一个像素用多少位来表示,一个像素一般包含RGB三基色,也就是红(red)

java学生信息管理系统在删除信息的时候遇到了问题,代码如下,求大神。

问题描述 java学生信息管理系统在删除信息的时候遇到了问题,代码如下,求大神. 这是代码 主类 public class Main { public static void main(String[] args) throws FileNotFoundException { int i = 0; Manage m=new Manage(); Scanner sc=new Scanner(System.in); ArrayList List=new ArrayList<Student>();

基于51单片机频率计的代码问题,求大神解答啦~

问题描述 基于51单片机频率计的代码问题,求大神解答啦~ 基于51单片机的频率计设计 软件设计原理:利用单片机内部资源,定时器0定时一秒,计数器1在1s内计数,从而计算得频率. 这样能测得1hz~450khz. 我想设定当频率小于10hz时,定时器0定时10s,计数器1在10s内计数,结果测得的数据除以10就得到频率,从而获得0.1hz~10hz更精确的频率. 现在代码测试的情况是:被测频率大于10hz没有问题,如果被测频率小于10hz,结果显示为10倍的频率,意思就是程序中没有除以10,怎么改

导入一个myeclipse项目本来正确的代码出错,求大神讲解

问题描述 导入一个myeclipse项目本来正确的代码出错,求大神讲解 做一个项目我myeclipse的配置jdk1.7的 ,不是一个人做,在导入项目后报出的错误很难理解,一个 ); 号错误,一直不知道怎么回事. 如图:为了与项目配置一致,我特意将jdk换成1.6的并且重新配置了环境变量,但是代码莫名其妙的报错,而且还不是全报错,是有的java类报错,有的配置文件报错. 解决方案 如果jar包确定导入的话,src里面错,有可能是由于编码问题,你看System语句有咩有乱码的,webroot里js