1 #include <stdlib.h>
#include <stdio.h> #define stackinitsize 50
#define stackincrement 8 typedef struct {
int x,y;
}posttype; typedef struct {
int ord;
posttype seat;
int di;
}elemtype; typedef struct{
elemtype *base;
elemtype *top;
int stacksize;
}sqstack; int initstack(sqstack &s)
{s.base=(elemtype * ) malloc(stackinitsize*sizeof(elemtype));
s.top=s.base;
s.stacksize=stackinitsize;
return ;
} int push(sqstack &s,elemtype e)
{
(*(s.top)).ord=e.ord;
(*(s.top)).seat.x=e.seat.x;
(*(s.top)).seat.y=e.seat.y;
(*(s.top)).di=e.di;
s.top++;
return ;
} //elemtype gettop(sqstack s)
//{
// return *(s.top-1);
// } int emptystack(sqstack s)
{if (s.top==s.base) return ;
else return ;
} int pop(sqstack &s,elemtype &e)
{ if (emptystack(s)) return ;
--s.top;
e.ord=(*(s.top)).ord;
e.seat.x=(*(s.top)).seat.x;
e.seat.y=(*(s.top)).seat.y;
e.di=(*(s.top)).di;
return ;
}

#include <stdio.h>
# include "d:\maze\mystack.h" #define TRUE 1
#define FALSE 0 int a[10][10]={1,1,1,1,1,1,1,1,1,1,
1,0,0,1,0,0,0,1,0,1,
 1,0,0,1,0,0,0,1,0,1,
1,0,0,0,0,1,1,0,0,1,
1,0,1,1,1,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,1,
1,0,1,0,0,0,1,0,0,1,
1,0,1,1,1,0,1,1,0,1,
1,1,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1}; typedef int Status; Status pass(posttype curpos)
{
if (a[curpos.x][curpos.y]==0)
return 1;
else
return 0;
} Status mazepath(int maze[10][10],posttype start,posttype end,sqstack &s)
{
int curstep;
posttype curpos;
elemtype e;
initstack(s);
curpos.x=start.x;curpos.y=start.y;
curstep=1;
do{
if(pass(curpos))
{
// footprint(curpos);//stroe foot e.ord=curstep;
e.seat.x=curpos.x;
e.seat.y=curpos.y;
e.di=1;
push(s,e);
if(curpos.x==end.x && curpos.y==end.y) return(TRUE);
curpos.y=curpos.y+1;//east near
curstep++;
}
else
{
if(!emptystack(s))
{
pop(s,e);
while(e.di==4 && !emptystack(s))
{
// markprint(s.seat);//outprint reverse
pop(s,e);
}//end while
if(e.di<4)
{
e.di++;push(s,e);
switch(e.di)
{
case 1:curpos.y=curpos.y+1;break;
case 2:curpos.x=curpos.x+1;break;
case 3:curpos.y=curpos.y-1;break;
case 4:curpos.x=curpos.x-1;break;
}
}//if(di<4)
}//if(!emptystack(s))
}//else
}while(!emptystack(s));
return FALSE;
} void outputstak(sqstack s)
{
elemtype e;
while(!emptystack(s))
{
pop(s,e);
printf("%d (%d,%d) %d\n",e.ord,e.seat.x,e.seat.y,e.di);
}
} main()
{
posttype start,end;
start.x=1;start.y=1;
end.x=8;end.y=8;
sqstack s1;
if(mazepath(a,start,end,s1)==TRUE)
outputstak(s1);
else
printf("\nno path....");
}

  

迷宫 maze的更多相关文章

  1. JZOI1134 迷宫(maze)

    #include <bits/stdc++.h> #define ll long long #define INF 2147483647 #define mem_INF 213906214 ...

  2. 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值

    一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...

  3. golang 实现广度优先算法(走迷宫)

    maze.go package main import ( "fmt" "os" ) /** * 广度优先算法 */ /** * 从文件中读取数据 */ fun ...

  4. php生成迷宫和迷宫寻址算法实例

    较之前的终于有所改善.生成迷宫的算法和寻址算法其实是一样.只是一个用了遍历一个用了递归.参考了网上的Mike Gold的算法. <?php //zairwolf z@cot8.com heade ...

  5. 【noip 模拟赛curse,light,maze】 题解

    2018.10.16 总结:考的不好 原因: 1.考的时候没状态,读题读不进去 2.考的时候不仔细,该得分没得到 T1:curse 1.咒语 (curse.pas/c/cpp) [题目描述] 亮亮梦到 ...

  6. maze writeup

    maze writeup 攻防世界的一道迷宫题,第一次接触这样的题,个人感觉很有意思,收获也挺多,做一篇笔记记录一下. 程序分析 __int64 sub_4006B0() { signed __int ...

  7. [python 译] 基于面向对象的分析和设计

    [python 译] 基于面向对象的分析和设计 // */ // ]]>   [python 译] 基于面向对象的分析和设计 Table of Contents 1 原文地址 2 引言 2.1 ...

  8. 面向对象设计——抽象工厂(Abstract Factory)模式

    定义 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类.抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么.这样一来,客户就能从具体的产 ...

  9. 设计模式之生成器(Builder)模式

    意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以表示不同的表示. 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 当构造过程必须允许被构造的对象有不同的表 ...

随机推荐

  1. TabHost理解与使用

    一.继承关系 java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.FrameLayout ↳ ...

  2. Android平台的四大天王:Activity, Service, ContentProvider, BroadcastReceiver

    今天开始要自学android,刚看到百度知道上面这段话,觉得不错(不过已经是2011年8月的回答了): Android系统的手机的每一个你能看到的画面都是一个activity,它像是一个画布,随你在上 ...

  3. ASP.NET mvc 遇见的问题

    1.数据库配置 The specified named connection is either not found in the configuration, not intended to be ...

  4. js对象字符串互转

    利用原生JSON对象,将对象转为字符串 var jsObj = {}; jsObj.testArray = [1,2,3,4,5]; jsObj.name = 'CSS3'; jsObj.date = ...

  5. OC - 28.模拟时钟

    效果图 实现思路 该示例通过隐式动画实现 表盘通过显示在imageView中的一张图片来实现 在表盘上绘制(时分秒)三条直线,分别位于不同的图层,且时针位于最下层,秒针位于最上层 设置直线为圆角 直线 ...

  6. base64加密解密文件

    1 //字符串加密 -(void)demo1 { //普通的 8 bit二进制数据 NSString *str = @"hello world!"; //将字符串转换成二进制数据 ...

  7. IIS部署.NET项目的有关事项_2015.07.02

    今天在做项目中的关于发送邮件的一些功能.在部署服务的时候遇到了一些奇葩的问题,基本上是和IIS有关的问题. 首先,项目是基于.NET Framework4.0 版本的,由于本人用的是一台新配置好的机器 ...

  8. js中立即执行

    ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到 ...

  9. JavaScript 获取当月天数

    getDate() 方法可返回月份的某一天.取值范围是1~31 如果是0的话,就返回最后一天.这样就能取得当月的天数了 比如获取16年2月份的天数 var day = new Date(2016,2, ...

  10. ecshop 商店设置,新增或者修改字段

    当想要新增选项到ecshop的商店设置时, 第一步:在ecs_shop_config这个表增加一条设置项记录 parent_id.code.type.value type 会有 group text  ...