减谈迷宫C++
今天老师让做了个迷宫问题,我一看到就发现和我之前写过的一个程序是一样 的,但是在后来编写的时候有一个地方搞错了,最后下课了我还是没有正确的编写好,然后今天回来之后自己有看了一下,现在已经解决了。
#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;
}
最新文章
- Spring系列之AOP实现的两种方式
- 阿里云 ECS 逻辑卷挂载数据盘
- 【Bugly技术干货】那些年我们用过的显示性能指标
- Python开发入门与实战8-基于Java的集成开发环境
- ArcGIS API for Silverlight代码中使用Template模板
- display:flex 多栏多列布局
- C#数字千分位问题
- jmeter 使用聚合报告分析jtl文件
- WCF - REST服务
- Intent组件
- ODI利用goldengate实现增量数据捕获
- CCNA网络工程师学习进程(9)GNS3的安装与配置
- AndroidAnnotations框架简单使用方法
- android源码、博文2
- Uva - 804 - Petri Net Simulation
- 生鲜配送管理系统_升鲜宝供应链系统V2.0 设计思想及主要模块,欢迎大家批评指点。
- 倒影问题(reflect:below)
- ARMCC和GCC编译ARM代码的软浮点和硬浮点问题 【转】
- 两个有序数组中的中位数以及求第k个最小数的值
- 【转】PHP 杂谈 坑爹的file_exists
热门文章
- django基础知识之视图:
- 9.秋招复习简单整理之Spring面试AOP和IOC的理解
- 《转载黑马教程》HTML&;&;CSS讲义,仅供参考
- NOIP最后阶段每日小记
- Excel催化剂开源第34波-SM.MS图床API调用(用POST上传multipart/form-data内容)
- C#3.0新增功能10 表达式树 04 执行表达式
- dede:channelartlist currentstyle高亮显示
- 爬虫之解析库pyquery
- Ubuntu16.04配置Django服务器环境
- JQuery制作简易的考试答题管理系统