资源简介
问题描述: 罗密欧与朱丽叶的迷宫。罗密欧与朱丽叶身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗密欧位于迷宫的(p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。请设计一个算法帮助罗密欧找出这样一条道路。 编程任务: 对于给定的罗密欧与朱丽叶的迷宫,编程计算罗密欧通向朱丽叶的所有最少转弯道路。
代码片段和文件信息
#include
#include
using namespace std;
class CMaze
{
public:
CMaze(int n int m);
void ReadData(ifstream& fileIn);
void OutPut(ofstream& fileOut);
int GetP();
int GetQ();
bool CanPast(int r int l);
void Search(int curTurn int curStep int curDir int posX int posY);
~CMaze();
private:
int n;
int m;
int k;
int** maze;
int** path;
int p q;
int r s;
int ans;
int ans_num;
};
int dir[9][2] = {{0 0} {-1 0} {1 0} {0 -1} {0 1} {-1 -1} {-1 1} {1 -1} {1 1}};
CMaze::CMaze(int n int m)
{
this->m = m;
this->n = n;
maze = new int*[n];
for(int i = 0; i < n; i++) maze[i] = new int[m];
path = new int*[n];
for(i = 0; i < n; i++) path[i] = new int[m];
for(i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
maze[i][j] = path[i][j] = 0;
}
}
ans = this->n * this->m;
ans_num = 0;
}
CMaze::~CMaze()
{
for(int i = 0; i < n; i++) delete[] maze[i];
delete[] maze;
}
void C
- 上一篇:VC6 多tab页显示插件
- 下一篇:C语言计算图片直方图
相关资源
- The C++ Programming Language 4th Edition.pdf
- visual c++串口通信技术详解
- MFC实现TCP数据传输
- VC++ CLR编写带图形界面的简单计算器
- 测试驱动嵌入式C语言开发中英文合集
- vc++6.0 绿色版 完整版支持win7,win8系统
- 停车场管理系统 MFC 数据结构课程设计
- C#图解教程.pdf
- 零基础学TMS320F281x DSP C语言开发.pdf
- 郑莉C++语言程序设计第3版[PDF+ppt+源码
- C++ Qt设计模式 第2版 中文版 PDF
- C++面向对象程序设计 谭浩强主编真正
- Dev-Cpp 5.11 TDM-GCC 4.9.2
- C++Primer课后习题解答(第1~18章完整答
- 啊哈c语言.pdf
- Modern C++ Design中文版.pdf
- 计算机图形学原理及算法教程(Visu
- c和c++安全编码
- C++光线跟踪
- C语言写的数据结构程序很多
- mfc绘制二维坐标系和波形图
- Qt/C++模仿酷狗音乐播放器执行文件
- Borland C++ 6.0 精简版
- 数据结构c语言版pdf 高清 完整版 中文
- GDAL3编译版本c++版本的编译.rar
- MFC大作业 学生管理系统(附报告)
- 数据结构 C++实现 第2版习题答案 缪淮
- C#开发FFMPEG(API方式) FFmpeg拉取RTMP流
- 用C++/MFC实现P2P和群聊功能的聊天小软
- C++ 五子棋代码的实现包括交换,禁手
评论
共有 条评论