当前位置: 首页 > wzjs >正文

湖州网站建设百度一下你就知道官页

湖州网站建设,百度一下你就知道官页,网站制作公司网站建设,网站图片装修的热切图怎么做如果是非递归情况 如果当前点(方格)为出口,则成功退出 (否则) 如果可继续走(向相邻点试探),存在某个可前进 的相邻点(分支)则: 1、将当前点保存,以便回退 2、将相邻点作为当前点…

如果是非递归情况 

如果当前点(方格)为出口,则成功退出 (否则)

如果可继续走(向相邻点试探),存在某个可前进 的相邻点(分支)则:

1、将当前点保存,以便回退

2、将相邻点作为当前点继续(该分支)

如果不能前进则:

1、取出最近保存的点,回退作为当前点

2、如果无法取出,则无通路,失败退出 

接下来考虑递归情况

 

#include <iostream>
using namespace std;
typedef struct ElemType{int x;int y;
};
typedef struct StackNode { //栈元素结点定义ElemType data; //结点数据StackNode* next; //结点链接指针
}*LinkStack; //链式栈
void InitStack(LinkStack& S) { //栈初始化S = NULL; //栈顶(链头)指针置空
}
int IsEmpty(const LinkStack& S) { //判栈空否return S == NULL;
}
int Push(LinkStack& S, ElemType& e) { //进栈StackNode* s = new StackNode;if (!s) exit(1); //可省略s->data = e; //结点赋值s->next = S; S = s; //链入栈顶return 1;
}
int Pop(LinkStack& S, ElemType& e) { //出栈if (IsEmpty(S)) return 0;StackNode* q = S;S = q->next; e = q->data; //摘下原栈顶delete q; return 1; //释放原栈顶结点
}
void ReTraverse(const LinkStack& S) {if (S) {ReTraverse(S->next);cout << "("<<S->data.x<<","<<S->data.y<<")"<<endl;}
}
void Go(ElemType start, ElemType end,int map[][10],LinkStack &S) {ElemType e; ElemType a;if (map[start.x][start.y] == 0) {if (start.x == end.x && start.y == end.y) { Push(S, start); ReTraverse(S); }else {map[start.x][start.y] = 1;Push(S, start);ElemType startA; startA.x = start.x - 1; startA.y = start.y;ElemType startL; startL.y = start.y - 1; startL.x = start.x;ElemType startV; startV.x = start.x + 1; startV.y = start.y;ElemType startR; startR.y = start.y + 1; startR.x = start.x;Go(startA, end,map,S);Go(startL, end, map, S);Go(startV, end, map, S);Go(startR, end, map, S);map[start.x][start.y] = 2;Pop(S, e);}}
}
int main(){LinkStack S; InitStack(S);ElemType start; ElemType end;start.x = 1; start.y = 1;end.x = 8; end.y = 8;int map[10][10] =//用二维数组表示地图:9代表墙,0代表通路{{ 9,9,9,9,9,9,9,9,9,9 },{ 9,0,0,9,0,0,0,9,0,9 },{ 9,0,0,9,0,0,0,9,0,9 },{ 9,0,0,0,0,9,9,0,0,9 },{ 9,0,9,9,9,0,0,0,0,9 },{ 9,0,0,0,9,9,0,0,0,9 },{ 9,0,9,0,0,0,9,0,9,9 },{ 9,0,9,9,9,0,9,9,0,9 },{ 9,9,0,0,0,0,0,0,0,9 },{ 9,9,9,9,9,9,9,9,9,9 }};Go(start, end, map, S);
}

 用二维数组表示地图,

Go函数内部设计思路见图:

首先该位置必须为0,即不能为"墙"才能行走,其次如果该位置是终点,则为递归的“出口”,则结束

否则进入递归最小问题:该位置从0标记为1记为走过的路,但因为不能再次走所以不能为0,入栈,之后分别计算上下左右的临近点坐标,挨个调用进行递归,若都失败弹出,则说明进入到了死胡同,标记出栈的位置为2,即为回退的路,与走过的路“1”做区分,然后出栈

完成以上步骤即可得出最终路径:

 

http://www.dtcms.com/wzjs/181048.html

相关文章:

  • 有域名后怎么建网站微信营销推广
  • javaweb做的购物网站成都网站seo设计
  • 顺的网站建设报价搜狗站长推送工具
  • 西安便宜的网站建设百度网盘电脑版登录入口
  • 专业建站公司前景社群营销方案
  • 做网站用dramwaver还是vs免费打广告平台有哪些
  • 天津b2b网站建设价格百度竞价价格查询
  • 建行个人网站网站推广方法有哪些
  • 个人网站 公安备案青海百度关键词seo
  • iis7.5网站配置重庆做优化的网络公司
  • 建设公司网站标题怎么制作一个自己的网站
  • 可以做动态图表的网站seo公司广州
  • 杂志网站建设方案搜索引擎优化哪些方面
  • notepad做网站技巧seo中国
  • 承德市网站建设公司培训seo去哪家机构最好
  • 深色调网站好用的搜索引擎
  • 手机网站推荐哪个好如何软件网站优化公司
  • 青岛正规品牌网站制作策划百度seo排名优化公司哪家好
  • 网站建设连接数据库百度电话怎么转人工客服
  • 站长工具传媒自动推广软件免费
  • 河北省住宅和城乡建设厅网站哈尔滨最新疫情
  • 浏览器怎么连接网站的关键词优化怎么做
  • 成都电商网站开发公司网络营销的目的是什么
  • 南宁市住房建设局网站网奇seo赚钱培训
  • 银河星宇 网站建设谷歌海外推广
  • 广州哪里有做网站十大网站管理系统
  • 网站设计思路文案范文下载百度搜索
  • ppt做会动彩字网站白云区新闻
  • 辽源市建设局网站搜索引擎优化的方式有哪些
  • h5微网站建设多少钱注册公司流程和费用