今天老师让做了个迷宫问题,我一看到就发现和我之前写过的一个程序是一样 的,但是在后来编写的时候有一个地方搞错了,最后下课了我还是没有正确的编写好,然后今天回来之后自己有看了一下,现在已经解决了。

#ifndef DIRECTION_H

#define DIRECTION_H

#include<iostream>

using namespace std;

struct node

{

int a;

int b;

};

class Direction

{

public:

Direction();

~Direction();

void DFS(int n, int m);

void udlr(int &n, int &m, int num);

void durl(int &n, int &m, int num);

void output();

private:

int **a;

int **visit;

node zxh[64];

int count1;

};

Direction::Direction()

{

count1 = 0;

a = new int*[8];

visit = new int*[8];

for (int i = 0; i<8; i++)

{

a[i] = new int[8];

visit[i] = new int[8];

}

for (int i = 0; i<8; i++)

{

zxh[i].a = -1;

zxh[i].b = -1;

}

int b[] = { 0, 0, 0, 0, 0, 0, 0, 0,

0, 1, 1, 1, 1, 0, 1, 0,

0, 0, 0, 0, 1, 0, 1, 0,

0, 1, 0, 0, 0, 0, 1, 0,

0, 1, 0, 1, 1, 0, 1, 0,

0, 1, 0, 0, 1, 0, 0, 0,

0, 1, 0, 0, 1, 0, 0, 0,

0, 1, 1, 1, 1, 1, 1, 0 };

for (int i = 0; i<8; i++)

{

for (int j = 0; j<8; j++)

{

a[i][j] = b[i * 8 + j];

visit[i][j] = 0;

}

}

}

Direction::~Direction()

{}

void Direction::udlr(int &n, int &m, int num)

{

if (num == 1)

n--;

else if (num == 2)

n++;

else if (num == 3)

m--;

else

m++;

}//著名方向

void Direction::durl(int &n, int &m, int num)

{

if (num == 1)

n++;

else if (num == 2)

n--;

else if (num == 3)

m++;

else

m--;

}//著名方向

void Direction::output()

{

int num = 0;

while (zxh[num].a != -1)

{

if (num % 7 == 0)

cout << endl;

cout << "(" << zxh[num].a << "," << zxh[num].b << ")"<<"  ";

num++;

}

}

void Direction::DFS(int n, int m)

{

if (n == 7 && m == 7)

{

output(); cout << endl; return;

}

else

{

for (int i = 1; i < 5; i++)

{

udlr(n, m, i);

if (n >= 0 && n < 8 && m >= 0 && m < 8 && a[n][m] == 0)

{

zxh[count1].a = n;

zxh[count1].b = m;

count1++;

a[n][m] = 1;

DFS(n, m);

a[n][m] = 0;

count1--;

zxh[count1].a = -1;

zxh[count1].b = -1;

}

durl(n, m, i);

}

}

}

#endif

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include"Direction.h"

#include<iostream>

using namespace std;

int main()

{

Direction z;

z.DFS(0,0);

return 0;

}

减谈迷宫C++的更多相关文章

  1. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  2. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  3. CSS布局 ——从display,position, float属性谈起

    页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了解的话,很容易出现一些莫名其妙的效果,痛定思痛读了<CSS Master ...

  4. java 和 mysql 获取周 星期 的第一天 最后一天 或者 月的 日期(字符串转日期,日期转字符串,日期加减)

    获取周的第一天,最后一天 System.out.println(getStartEndDate("2016-05-01", 1)); 获取星期的第一天和最后一天 System.ou ...

  5. 转:浅谈C/C++中的指针和数组(一)

    再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...

  6. 浅谈C++源码的过国内杀软的免杀

    以下只是简单的思路和定位.也许有人秒过,但是不要笑话我写的笨方法.定位永远是过期不了的. 其实这里废话一下 , 本人并不是大牛 ,今天跟大家分享下 .所以写出这篇文章.(大牛飘过) 只是个人实战的经验 ...

  7. CSS布局 ——从display,position, float属性谈起(转)

    CSS布局 ——从display,position, float属性谈起   页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了 ...

  8. (转载)浅谈我对DDD领域驱动设计的理解

    原文地址:http://www.cnblogs.com/netfocus/p/5548025.html 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来 ...

  9. 前阿里CEO卫哲谈阿里创业经验:如何找人、找钱、找方向?(不同的阶段分别有:时间优先、金额优先、比例优先,不要做平台,太难)

    新浪科技李根 整理报道 卫哲现在是御嘉基金的创始合伙人,他另一个更加知名的身份是阿里巴巴(B2B)前CEO,在2006年到2011年的时间里,卫哲见证了阿里巴巴如何利用人才.资本和方向选择一路壮大. ...

随机推荐

  1. django基础知识之认识MVT MVC:

    MVT Django是一款python的web开发框架 与MVC有所不同,属于MVT框架 m表示model,负责与数据库交互 v表示view,是核心,负责接收请求.获取数据.返回结果 t表示templ ...

  2. Event StoryLine Corpus 论文阅读

    Event StoryLine Corpus 论文阅读 本文是对 Caselli T, Vossen P. The event storyline corpus: A new benchmark fo ...

  3. 好用的在线画图工具processon

    ProcessOn是一款基于SaaS的前沿.高效线上作图工具,它将Visio.Xmind等专业作图工具搬到了"云端" 注册链接:https://www.processon.com/ ...

  4. Java虚拟机知识点【内存】

    运行时数据区 程序计数器(Program Counter)   每个线程独占自己的程序计数器.如果当前执行的方式不是native的,那程序计数器保存JVM正在执行的字节码指令的地址,如果是native ...

  5. MYSQL主从复制、主主复制、双主多从配置

    一.如何配置MYSQL的主从复制? 1. 两台数据库服务器,IP分别为 192.168.216.128 和 192.168.216.129,在服务器上装MYSQL(我的配置版本为5.5.56) 2. ...

  6. python取数字、字母

    python取数字.字母 有一串字符串“lxa7YzU”,其中有大写字母.小写字母和数字,现编写一脚本使得实现以下功能: 将这串字符串中的数字.大写字母.小写字母分别取出来并进行分类. 脚本如下所示: ...

  7. linux初学者-系统日志(二)

    linux初学者-系统日志(二) 先前在(一)中介绍到在不同主机间日志同步的方法,在一台主机上可以看到另一台主机的日志.这里会介绍系统日志方面的一些其他内容. 1.日志的采集格式 在日志的采集中,由图 ...

  8. 林大妈的JavaScript基础知识(三):JavaScript编程(1)对象

    1. 对象的简单介绍与一些注意事项 JavaScript中具有几个简单数据类型:数字.字符串.布尔值.null值以及undefined值.除此之外其余所有值(包括数组.函数,甚至正则表达式)都是对象. ...

  9. 手工sql注入(重点)

    sql 子查询:() select goods_name from goods where goods_id=(select max(goods_id) from goods): 联合查询:selec ...

  10. jQuery中事件与动画

    jQuery中的事件与动画   一. jQuery中的事件 jQuery事件是对javaScript事件的封装. 1.基础事件 在javaScript中,常用的基础事件有鼠标事件.键盘事件.windo ...