- 浏览: 761756 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
#include<iostream> #include"LinkedStack.cpp" using namespace std; class Point{ public: int x; int y; public: Point():x(0),y(0){} Point(int i,int j):x(i),y(j){} }; template<typename T> int fun(int (*a)[10],int i,int j,LinkedStack<T>& sk) { int cx,cy; Point p(0,0); for(int x=1;x>=-1;--x){ for(int y=1;y>=-1;--y){ cx = x+i; cy = y+j; if((x==0&&y==0)||cx<0||cy<0||cx>9||cy>9) continue; if(*(*(a+cx)+cy)==0){ p = Point(cx,cy); sk.Push(p); *(*(a+cx)+cy)=1; if(cx==9&&cy==9) return 1; if(fun(a,cx,cy,sk)){ return 1; } } } } sk.Pop(p); return 0; } int main() { LinkedStack<Point> sk; int a[10][10]={ 1,1,1,1,0,1,1,1,1,1, 0,1,1,0,1,1,0,0,0,1, 1,0,0,1,0,1,1,0,0,1, 1,1,1,0,1,1,1,1,0,1, 1,1,1,0,1,0,1,0,1,1, 1,1,1,0,0,1,0,1,1,1, 1,1,0,1,1,1,0,1,1,1, 1,1,1,0,1,1,0,1,1,1, 1,1,1,1,1,1,1,0,0,1, 1,1,1,1,1,1,1,1,1,0 }; Point pStart(1,1); sk.Push(pStart); fun(a,1,0,sk); while(not sk.IsEmpty()){ sk.Pop(pStart); cout << "[" << pStart.x << "," << pStart.y << "] "; } cout << endl; } [9,9] [8,8] [8,7] [7,6] [6,6] [5,6] [4,5] [5,4] [4,3] [3,3] [2,2] [2,1] [1,1]
发表评论
-
时间复杂度推导
2012-06-05 22:57 9791.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 806数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 783数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 747完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 511红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1097template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1077散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 800#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 924字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 921改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 883bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 910Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 949在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 596森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1263binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 841一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 888结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 934广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 929矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 598PQueue.h #ifndef PQUEUE_H #d ...
相关推荐
数据结构走迷宫算法,学习了他人的之后自己写的程序,运行OK
迷宫问题。迷宫问题的求解是实验心理学中的一个经典问题,心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫,迷宫中设置很多隔壁,对前进方向形成了多处障碍,心理学...设计回溯算法实现如图所示的迷宫的求解。
在C语言中实现回溯法走迷宫,主要涉及以下几个关键知识点: 1. **数据结构**:首先,我们需要定义一个数据结构来表示迷宫。这通常是一个二维数组,其中每个元素代表一个节点,值可以是0或1,0表示可通行,1表示障碍...
回溯法是一种在解决问题时通过试探性的步骤来寻找答案的算法策略,当发现某一步走不通时,会退回上一步,甚至更早的步骤,尝试其他路径,直到找到所有可能的解决方案或者证明无解。在本案例中,"回溯法解迷宫问题"是...
在本案例中,我们关注的是使用回溯法来解决迷宫问题,这是一种经典的计算机科学算法,尤其适用于解决无解或多解的问题。谭浩强的《C语言程序设计》一书对这个问题进行了详细的阐述,下面我们将深入探讨迷宫问题的...
用回溯法完成迷宫问题,思路比较简单,有详细的注释
### 回溯法解迷宫问题 #### 一、引言 迷宫问题是计算机科学中的一个经典问题,常被用来测试算法效率与解决问题的能力。在众多解决迷宫问题的方法中,回溯法因其简单易懂且能有效找到解而被广泛采用。本文将通过...
【标题】"老鼠走迷宫C++"是一个编程项目,主要目标是使用C++语言来模拟老鼠在迷宫中寻找出路的过程,并可视化显示老鼠走过的路径。这个项目可以帮助学习者深入理解C++编程语言,同时涉及到算法设计和数据结构的应用...
该算法可以随机产生任意大小的迷宫,迷宫的大小由用户输入决定 回溯法解决迷宫是个经典算法,利用顺序栈来存储迷宫路线 如果能成功走出迷宫,可以画出迷宫轨迹
开始走迷宫** 程序从起点开始,尝试寻找通往终点的路径。 **2. 计算方向坐标** 根据当前位置坐标 `(p.x, p.y)` 和预设的移动方向 `(move[p.k].x, move[p.k].y)` 来计算下一个可能的位置 `(dp_x, dp_y)`。 **3. ...
"走迷宫3.txt", "走迷宫2.txt", 和 "走迷宫.txt" 可能包含了不同的迷宫布局,用于测试和练习编写好的算法。通过分析这些文本文件,我们可以实际运行程序,观察递归函数如何在不同迷宫中找到路径。 递归函数的基本...
在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)框架来实现一个随机生成迷宫并采用非递归方式动态地有回溯地走出迷宫的程序。MFC是微软提供的一套C++库,它为Windows应用程序开发提供了丰富的...
### 智能走迷宫小车制作的基本过程及关键技术 #### 一、引言 在智能机器人领域,智能走迷宫的小车是一项经典的研究课题。这类项目不仅考验设计者的编程能力和机械结构设计水平,还涉及到传感器技术、电机控制等多...
在Java编程领域,走迷宫问题是一个经典的算法挑战,它涉及到路径查找和搜索策略。这个“java版走迷宫”项目提供了一种解决方案,对于初学者来说,它具有极高的学习价值,可以帮助深入理解Java语言以及算法应用。下面...
用非递归写的走迷宫,适合初学者使用,注释比较详细,欢迎下载
以下是关于"Java课程设计走迷宫"的主要知识点: 1. **基础语法与面向对象编程**:在Java中,编写迷宫游戏需要掌握基本的语法结构,如类、对象、方法、变量等。同时,要理解封装、继承和多态等面向对象特性,以便...
走迷宫实现程序是一个基于C++的项目,旨在帮助学习者深入理解栈的数据结构以及C++界面编程的基本原理。在程序设计中,迷宫问题是一个经典的路径搜索问题,常常用于展示回溯法、深度优先搜索(DFS)或广度优先搜索...
走迷宫代码是一种常见的编程挑战,它涉及到搜索算法和图遍历。在这个场景中,"game.cpp" 可能是实现走迷宫算法的源代码文件,"game.exe" 是编译后的可执行程序,而 "1.map" 很可能是表示迷宫布局的地图文件。 在...
《老鼠走迷宫游戏》是一款基于迷宫路径搜索算法的游戏,玩家可以操控老鼠在随机生成的迷宫中寻找出路,同时还要避开猫的追逐。在这个游戏中,深度优先搜索(DFS)算法被用来解决老鼠如何有效地在迷宫中移动。下面...