欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年迷宫老鼠_数据结构与算法 .pdf

    • 资源ID:33651495       资源大小:52.46KB        全文页数:6页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年迷宫老鼠_数据结构与算法 .pdf

    1. 问题:迷宫老鼠问题的解答2. 算法的基本思想:定义一个字符型二维数组,通过调用随机函数给数组赋值,从而在每次运行程序的时候得到不同的数组值,从而用其代表一个随机的迷宫地图。该问题的解决关键是如何判断是否存在可行的路径,如果存在如何记录并找出来。该程序是通过栈来解决的,其中栈是用数组实现的。基本思想如下,先随机产生一个迷宫(二维数组中代表可走的位置, 0代表迷宫中的障碍物, “* ”是围墙),定义一个寻找路径的函数,其返回值为真假。函数中先定义一个栈,将其置空初始化。目标放在开始处,将其置为Z ,然后判断目标当前位置是否在出口位置, 如果不在则以此判断目标当前位置的前后左右是否可以走,成立的条件是不能碰到围墙,并且要走到的位置为 ,可以走的话就让目标行进到该位置然后将方向(0 代表右, 1 代表下, 2 代表左, 3 代表上)入栈,如果四个方向都走不通了,判断栈是否为空,如果为空则函数返回false即失败了, 老鼠走不出去; 如果栈不为空, 取出栈顶元素并弹栈,接着判断取出的栈顶元素进而判断出最近一步的方向,然后让目标逆着该方向移动一步。如果判断目标当前位置在出口处,函数返回true即成功了老鼠可以出去,定义一个新栈将原来栈中的元素逆序存储起来。将当前迷宫中为Z的位置置为 ,将目标置于开始处,取栈顶元素来判断方向,相应移动目标,紧随弹栈,如此循环直到新栈为空为止。每移动一步将迷宫画一次。如此则能动态的描绘出老鼠所走的路径。3. 主要数据结构:线性表中的栈4. 主要函数功能:程序中一共有三个函数如下所示(1)迷宫初始化函数void Migonglaoshu:Migong() (2)迷宫输出函数void Migonglaoshu:Display()const (3)利用栈找到并存储老鼠的可行路径函数bool Migonglaoshu:Path() 此外还有一些最基本的函数,包括通过指针来实现栈的一系列操作函数,类的构造函数和析构函数。在这些基本函数的支持下使得本程序可以执行。将栈置空: void MakeNull() 将一个元素压入栈中:void Push(int x,STACK S) 弹栈 void Pop(STACK S)取出栈顶元素int Top(STACK S)判断栈是否为空bool Empty(STACK S) 构造函数给类的变量赋值Migonglaoshu:Migonglaoshu(int h,int w):row(h), col(w)析构函数 Migonglaoshu:Migonglaoshu() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 5. 算例:算例 1(老鼠不能逃出)请输入迷宫的行数和列数(10 10 ) :15 30 请输入迷宫的行数和列数(10 10 )15 30 * *ZOOOOO O OOOO OO O O O * * O O OOO OO OO O O O* * OO O O O * *O OO OO OO O * * O OO OOO OOO OOO OO O* * O O OO O O * *OOOOO O OO O O O O * * O O OO O O O O* * O OO O OO O * * O OO O O O O* * O O O O * * O OO O O O OOO O* * O O O O O O* * 请按任意键继续. . . 老鼠不能逃走 ! 算例 2(老鼠成功逃出)请输入迷宫的行数和列数(10 10 ) :15 30 * *ZO O O OO O * * O O O O O * *OOO OO O O O O O * *OO O O OO * * OO O O OO O O * * O O OO * * O OOO OO OOO O* * OO O OO O * * O O O* * O OOO O O O O O O OO* *O O O OOO OO OO O O * * O O O OOO O O O* * OO OOO O O OO * * 请按任意键继续. . . * *ZO O O OO O * *ZZZZZO O O O O * *OOO ZOO O O O O O * *OO ZZZZZZZZZZ O O OO * * OO O OZOO O O * * O ZZO OO * * O OOO Z OO OOO O* * OO O ZOO O * * O ZZZZZZ O O* * O OOO O O O ZO O O OO* *O O O OOO OO ZOO O O * * O O O OOO OZZZZZO O* * OO OOO O O OOZZZZZ* * 老鼠成功逃出迷宫! Press any key to continue 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - 6. 算法性能分析:(1)输入:外部可以输入迷宫的行数和列数。(2)输出:程序输出结果为初始化以后的迷宫以及老鼠可以走出去的前提下老鼠每一步是如何移动的(即前后左右)。(3)确定性:算法中每一条语句都有明确的含义。(4)有限性: 算法中的所有循环结构都有正确合适的控制条件,不论老鼠能否走出去,都不会陷入死循环。程序运行有限步以后就会停止,然后输出结果。(5)可行性:算法中的每一个运算步骤都可以精确地执行,而且做又穷次运算后即可完成。7. 程序运行环境:Microsoft Visual C+ 6.0 8. 源码:#include #include #include using namespace std; const int East = 0; const int South = 1; const int West = 2; const int North = 3; const int pause = 30; / 用指针的方式实现栈的各种操作struct node int val; node *next; ; typedef node * STACK; / 将栈置空void MakeNull() STACK S; S=new node; S-next=NULL; / 将一个元素压入栈中void Push(int x,STACK S) STACK stk; stk=new node; stk-val=x; stk-next=S-next; S-next=stk; / 弹栈void Pop(STACK S) STACK stk; if(S-next) stk=S-next; S-next=stk-next; delete stk; / 取出栈顶元素名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - int Top(STACK S) if(S-next) return(S-next-val); else return NULL; / 判断栈是否为空bool Empty(STACK S) if(S-next) return false; else return true; / 定义一个类(Migonglaoshu )class Migonglaoshu public: Migonglaoshu(int row,int col); Migonglaoshu(); void Display()const; bool Path(); private: const int row; const int col; char *Map; void Migong(); ; / 利用构造函数给类的变量赋值Migonglaoshu:Migonglaoshu(int h,int w):row(h), col(w) Map = new char *row; for (int i=0; irow; +i) Mapi = new charcol; Migong(); / 析构函数Migonglaoshu:Migonglaoshu() for (int i=0; irow; i+) delete Mapi; delete Map; / 迷宫输出函数void Migonglaoshu:Display()const for (int i=0; irow; +i) for (int j=0; jcol; +j) cout Mapij; cout endl; / 迷宫初始化函数void Migonglaoshu:Migong() srand(time(NULL); for (int i=0; irow; +i) for (int j=0; jcol; +j) if (i=0) | (j=0) | (i=row-1) | (j=col-1) Mapij = *; continue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - if (rand() % 100 next=NULL; while (true) if(i=row-2 & j=col-2) int m, n; STACK newStack; newStack=new node; newStack-next=NULL; while (!Empty(Stack) Push(Stack-next-val,newStack); Pop(Stack); for (m=0; mrow; +m) for (n=0; ncol; +n) if (Mapmn = Z) Mapmn = ; m = 1; n = 1; Mapmn = Z; Maprow-2col-2= ; while (!Empty(newStack) flag = Top(newStack); switch (flag) case East: +n; break; case South: +m; break; case West: -n; break; case North: -m; break; Mapmn = Z; Sleep(pause); system(cls); Display(); Pop(newStack); return true; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - /East: if (j+1 col-1) & (Mapij+1 = ) Mapi+j = Z; Push(0,Stack); /South: else if (i+1 0) & (Mapij-1 = ) Mapi-j = Z; Push(2,Stack); /North: else if (i-1 0) & (Mapi-1j = ) Map-ij = Z; Push(3,Stack); else if(Empty(Stack) return false; flag = Top(Stack); Pop(Stack); switch (flag) case East: -j; break; case South: -i; break; case West: +j; break; case North: +i; break; / 主函数void main() int row,col; cout 请输入迷宫的行数和列数(10 10) :rowcol; Migonglaoshu migonglaoshu(row,col); migonglaoshu.Display(); system(pause); if (migonglaoshu.Path() cout n老鼠成功逃出迷宫! endl; else coutn老鼠不能逃走!endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

    注意事项

    本文(2022年迷宫老鼠_数据结构与算法 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开