c++递归-初学递归,有些疑惑请大家帮助

问题描述

初学递归,有些疑惑请大家帮助

是利用递归解决迷宫问题
初学C++,要利用递归解决迷宫问题,迷宫需要自己输入,0代表可以走通,1代表走不通,下面是我的程序,求各位看看那里有问题,为什么不出结果
#include
#include
using namespace std;
struct point
{ int x,y;
};
int xmove[4]={0,1,0,-1};
int ymove[4]={1,0,-1,0};
class Maze
{
public:
Maze(int r,int c);
~Maze();
void Buildmaze();
int Seekpath(point p1,point p2);
void Run();
private:
int row,column;
point entrance,exit;
int **maze;
int **mark;
};
Maze::Maze(int r, int c):row(r),column(c)
{}
Maze::~Maze()
{ for(int i=0;i
{
delete []maze;
delete []mark;
maze=NULL;
mark=NULL;
}
delete [row]maze;
maze=NULL;
delete [row]mark;
mark=NULL;
}
void Maze::Buildmaze()
{ cin>>entrance.x>>entrance.y>>exit.x>>exit.y;
maze=new int*[row];
int i,j;
for(i=0;i
maze=new int[column];
for(i=0;i
for(j=0;j
cin>>maze[j];
maze[entrance.x][entrance.y]=0;
}
int Maze::Seekpath(point p1,point p2)
{ int i,j;
point nextpoint;
mark=new int*[row];
for(i=0;i
mark=new int[column];
for(i=0;i
for(j=0;j
mark[j]=0;
mark[entrance.x][entrance.y]=1;
if(p1.x==p2.x&&p1.y==p2.y)
return 1;
for(i=0;i
{ nextpoint.x=p1.x+xmove;
nextpoint.y=p1.y+ymove;
if(nextpoint.x>=0&&nextpoint.x<=row-1&&nextpoint.y>=0&&nextpoint.y<=column-1)
{ if(maze[nextpoint.x][nextpoint.y]==0&&mark[nextpoint.x][nextpoint.y]==0)
{ mark[nextpoint.x][nextpoint.y]=1;
if(Seekpath(nextpoint,exit))
{
return 1;
}
}
}
}
if(i=4)
cout<<"no path"<
return 0;
}
void Maze::Run()
{ Buildmaze();
if(Seekpath(entrance,exit))
{ cout
}
int main()
{ int row,column;
point entrance,exit;
cin>>row>>column;
Maze m(row,column);
m.Run();
m.~Maze();
return 0;
}

感激不尽

解决方案

骚年 使用编辑器里的代码段贴代码吧 这缩进看的蛋疼啊

时间: 2024-10-30 14:11:54

c++递归-初学递归,有些疑惑请大家帮助的相关文章

树形 递归-java 递归报错 求大神帮忙

问题描述 java 递归报错 求大神帮忙 private List<Post> getPostLower(List<Post> PostTops){ List<Post> postAll=new ArrayList<Post>(); // 上级 for(Post post:PostTops){ //查询到下级 List<Post> posts=basService.queryPostByParentId(post.getPostId()); //

c语言版本二叉树基本操作示例(先序 递归 非递归)_C 语言

复制代码 代码如下: 请按先序遍历输入二叉树元素(每个结点一个字符,空结点为'='):ABD==E==CF==G== 先序递归遍历:A B D E C F G中序递归遍历:D B E A F C G后序递归遍历:D E B F G C A层序递归遍历:ABCDEFG先序非递归遍历:A B D E C F G中序非递归遍历:D B E A F C G后序非递归遍历:D E B F G C A深度:请按任意键继续. . . 复制代码 代码如下: #include<stdio.h>#include&

java 递归问题-递归问题-求答案-答案为千位数

问题描述 递归问题-求答案-答案为千位数 public class T { /** * @param args */public static void main(String[] args) { T t = new T(); System.out.print(t.f(3)); }int f(int i){ if(i<=0) return 8; else{ System.out.print(i*f(i-1)); return i*f(i-1); }} }

JavaScript的递归之递归与循环示例介绍_javascript技巧

递归与循环 对于不同类型的需要重复计算的问题,循环和递归两种方法各有所长,能给出更直观简单的方案.另一方面,循环和递归的方法可以互相转换.任何一个循环的代码都可以用递归改写,实现相同的功能:反之亦然.在不失去其普遍性的前提下,可以把循环和递归分别用下列伪代码概括. 伪代码格式说明:循环采用while形式:变量不加定义:赋值用:=:条件表达式和执行的语句都写成函数的形式,圆括号内写上相关的值.其他语法方面,尽量接近Javascript的规范. 复制代码 代码如下: //pseudo code of

初学SQL分页疑惑

问题描述 在网上找到的例子都是基本上是这样:--查询第11-15条记录SELECTTOP5*FROMLeaveWordViewWHEREIDNOTIN(SELECTTOP10IDFROMLeaveWordView)--SELECTTOPPageSize*FROMLeaveWordViewWHEREIDNOTIN(SELECTTOP(PageIndex-1)*PageSizeIDFROMLeaveWordView)有一些疑惑,请各位大神指点,万分感谢!问题如下:(1)就是那个ID是什么?如果这个I

想学下c#,有些疑惑请指点下

问题描述 是这样子的我马上就要毕业了,感觉还是什么都不会,想学c#,想问一下,要是能学到实用的水平大概要多久啊,我以前学计算机的,只会c和asp,不过都不是太精通,用asp做过个聊天室系统现在主要想学好c#和sqlserver到时候看能不能找到个好点的事情做着,或者做网上的外包业务,哪大概要到一个什么水平啊?想请各位前辈指点一下迷津,要是能教教我那更加是感激不尽我的qq:81417365 解决方案 解决方案二:有基础两个月就行了吧解决方案三:C#入门很快的!解决方案四:但是我看书上讲的些东西都差

初学struts2的疑惑!

问题描述 <packagename="front"namespace="/"extends="struts-default"><default-action-refname="Category_List"></default-action-ref><actionname="Category_List"><result>WEB-INF/index.j

初学socket的疑惑

问题描述 请问一个服务器能和多个客户端建立socket吗?怎么监听网络上所有IP发来的socket请求?可以的话如何实现呢? 多谢了!! 解决方案 解决方案二:可以的,想想看如果服务器每次只能接受一个用户的连接那么这样的服务又能又什么用呢!这是我从网上找到的文章,看看吧,对我们都会有些帮助!它是每次接受到一个请求后就建立一个独立的线程来处理这个连接!http://tech.163.com/06/0410/09/2EBABUD20009159T.html解决方案三:请问一个服务器能和多个客户端建立

SCBCD 认证的疑惑 请大哥们帮我解答

问题描述 小弟马上要参加公司组织的SCBCD考试,哪位大哥考过的说说看310-091这个题库命中率到底高不高啊?因为公司说如果考过帮付款,考不过自己付款...小弟不想悲剧阿. 解决方案 解决方案二:很简单的!这个考不过就说不过去了...解决方案三:能不能说说看310-091这个题库管不管用撒解决方案四:该回复于2011-04-02 13:47:29被版主删除