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

#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# 创建Windows服务demo

    一.准备工作 1.操作系统:Windows 10 X64 2.开发环境:VS2017 3.编程语言:C# 4. .NET版本:.NET Framework 4.5 二.创建Windows Servic ...

  2. 玩转SpringBoot之整合Mybatis拦截器对数据库水平分表

    利用Mybatis拦截器对数据库水平分表 需求描述 当数据量比较多时,放在一个表中的时候会影响查询效率:或者数据的时效性只是当月有效的时候:这时我们就会涉及到数据库的分表操作了.当然,你也可以使用比较 ...

  3. 【朝花夕拾】Android自定义View篇之(十)TouchSlop及VelocityTracker

    前言 在Android事件中,有几个比较基本的概念和知识点需要掌握.比如,表示最小移动阈值的TouchSlop,追踪事件速度的VelocityTracker,用于检测手势的GestureDetecto ...

  4. http接口测试和使用,首先要了解什么是http请求

    http接口测试和使用,首先要了解什么是http请求: http请求通俗讲就是把客户端的东西通过http协议发送到服务端,服务端根据http协议的定义解析客户端发过 来的东西! http请求中常用到的 ...

  5. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)

    简介 本篇文章与前边没有多大关联,就是对前边有关发邮件的总结和梳理.在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下, ...

  6. 【模拟】CF409C 【Magnum Opus】-C++

    题目背景 愚人节题目,题面似乎是一位名叫Nicolas Flamel的炼金术士用拉丁文写的某种物质的配方,结合谷歌尝试翻译了一下: 吾友: 哲人石所言不虚,人不可貌相,海不可斗量,唯努力得胜万象,亦无 ...

  7. vs2010 安装项目完成桌面快捷方式无法定位程序文件夹 解决方法

    本文转载自http://www.cnblogs.com/jasonxuvip/archive/2012/07/13/2589952.html 软件打包工具有很多种,让人不知道选那个方便自己使用,Tig ...

  8. 个人永久性免费-Excel催化剂功能第49波-标准数据结构表转报表样式结果

    中国的企业信息化,已经过去了20年,企业里也产生了大量的数据,IT技术的信息化管理辅助企业经营管理也已经得到广泛地认同,现在就连一个小卖部都可以有收银系统这样的信息化管理介入.但同时也有一个很现实的问 ...

  9. C#3.0新增功能07 查询表达式

    连载目录    [已更新最新开发文章,点击查看详细] 查询是什么及其作用是什么 查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织. 查询与它生成的结果不同. 通常情 ...

  10. ArcGIS API For JavaScript 开发(二)基础地图

    有了开发环境,接下来的就是实践了,实践是检验真理的唯一标准! 多多练习,不要觉得自己能够想的出来就万事大吉了,还是得动手做才是最好的检验自己的能力. 基础地图,本节将通过arcgis api for ...