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

#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. C#中的委托和事件(下篇)

    上次以鸿门宴的例子写了一篇博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用中使用它们,那么,这篇窗体篇,将在Winform场 ...

  2. 使用Optional摆脱NPE的折磨

    在目前的工作中,我对Java中的Stream和Lambda表达式都使用得很多,之前也写了两篇文章来总结对应的知识. 024:Java流实现Shell:cat 1.log | grep a | sort ...

  3. SQL Server 存储过程相关语法

    一.定义变量及赋值 1.1 普通变量 --定义变量 declare @parameter_set int ) ) --set 关键字赋值 ; --select 赋值 select @parameter ...

  4. [译]Vulkan教程(33)多重采样

    [译]Vulkan教程(33)多重采样 Multisampling 多重采样 Introduction 入门 Our program can now load multiple levels of d ...

  5. python对Excel的读取

    在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗? 应对这一问 ...

  6. 【学习笔记】动态规划—斜率优化DP(超详细)

    [学习笔记]动态规划-斜率优化DP(超详细) [前言] 第一次写这么长的文章. 写完后感觉对斜优的理解又加深了一些. 斜优通常与决策单调性同时出现.可以说决策单调性是斜率优化的前提. 斜率优化 \(D ...

  7. [原创]Floodlight安装

    Floodlight安装:一.安装环境: ubuntu-12.04-64bit二.安装Floodlight: #apt-get update #apt-get install build-essent ...

  8. 实现一个代码自动生成(一):模板引擎Freemarker

    目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...

  9. Python常用的标准库以及第三方库

    Python常用的标准库以及第三方库有哪些?   20个必不可少的Python库也是基本的第三方库 读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们 ...

  10. k8s1.9.0安装--环境准备

    一.预先准备环境 1. 准备服务器 这里准备了三台centos虚拟机,每台一核cpu和2G内存,配置好root账户,并安装好了docker,后续的所有操作都是使用root账户.虚拟机具体信息如下表: ...