求解迷宫问题-(c语言-很详细哦)教学教材
- 格式:doc
- 大小:84.00 KB
- 文档页数:8
c语言迷宫问题课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中的基本控制结构,包括顺序结构、选择结构和循环结构。
2. 学生能运用数组的概念,实现迷宫的二维表示。
3. 学生能理解并实现递归算法,解决迷宫路径搜索问题。
技能目标:1. 学生能够设计并编写C语言程序,实现迷宫的创建和路径的寻找。
2. 学生通过迷宫问题,培养逻辑思维和问题解决能力,能够将复杂问题分解为小问题逐一解决。
3. 学生能够运用调试工具,对程序进行调试和优化,提高代码的执行效率。
情感态度价值观目标:1. 学生在探索迷宫问题的过程中,培养对编程的兴趣,增强学习信息技术的信心和热情。
2. 学生通过团队协作解决问题,培养沟通协作能力和集体荣誉感。
3. 学生能够体会到编程解决问题的成就感,激发继续深入学习计算机科学的兴趣。
课程性质:本课程为高年级信息技术课程,以项目式学习方式展开,强调理论与实践相结合。
学生特点:学生具备基本的C语言知识,具有一定的逻辑思维和问题解决能力。
教学要求:教师需引导学生主动探索,鼓励学生提出问题、分析问题并解决问题,注重培养学生的实际操作能力和团队协作能力。
通过本课程的学习,使学生将所学知识应用于实际问题的解决中,提高综合运用能力。
二、教学内容本课程以C语言迷宫问题为载体,结合以下教学内容,确保学生能够达成课程目标:1. C语言基础知识回顾:包括变量、数据类型、运算符、控制结构(顺序、选择、循环)。
2. 二维数组:数组的概念、二维数组的定义和使用,以及如何用二维数组表示迷宫。
3. 递归算法:递归的定义、递归调用的执行过程,以及如何利用递归求解迷宫路径。
4. 程序调试与优化:介绍调试工具的使用,指导学生如何查找并修正程序中的错误,提高代码执行效率。
教学内容安排:第一课时:C语言基础知识回顾,导入迷宫问题,讨论迷宫问题的解决思路。
第二课时:学习二维数组,学生尝试使用二维数组创建迷宫。
第三课时:介绍递归算法,分析迷宫问题中递归的应用。
迷宫求解c 课程设计一、课程目标知识目标:1. 学生能够理解并掌握迷宫问题的基本概念和解题原理。
2. 学生能够运用算法思想,设计并实现迷宫求解的步骤。
3. 学生能够运用所学知识,分析并解决迷宫求解过程中的问题。
技能目标:1. 学生能够运用流程图、伪代码等方式,表达迷宫求解的算法过程。
2. 学生能够通过编程实践,掌握迷宫求解的具体实现方法。
3. 学生能够运用批判性思维,评价不同迷宫求解算法的优缺点。
情感态度价值观目标:1. 学生能够积极参与迷宫求解的学习和讨论,培养合作精神和探究意识。
2. 学生能够在解决迷宫问题的过程中,体会算法思维的魅力,增强对编程学习的兴趣。
3. 学生能够通过迷宫求解的实践,培养面对复杂问题时的耐心、细心和解决问题的能力。
课程性质:本课程为计算机科学领域的一节算法实践课,旨在通过迷宫求解问题,帮助学生理解算法思想,提高编程能力。
学生特点:五年级学生,具备一定的计算机操作能力和逻辑思维能力,对新鲜事物充满好奇心。
教学要求:注重理论与实践相结合,鼓励学生积极参与讨论,培养学生的动手能力和解决问题的能力。
通过本节课的学习,使学生能够将所学知识应用于实际问题的解决中。
二、教学内容本节课教学内容主要包括以下三个方面:1. 迷宫问题基本概念- 迷宫的定义及其特点- 迷宫求解的意义和应用2. 迷宫求解算法原理- 深度优先搜索(DFS)和广度优先搜索(BFS)算法原理- 最短路径求解:Dijkstra算法和A*算法简介3. 迷宫求解编程实践- 使用流程图和伪代码描述迷宫求解过程- 编程实现迷宫求解算法(以Python语言为例)- 分析和讨论不同算法的性能和适用场景教学大纲安排如下:1. 导入新课:通过趣味迷宫游戏,激发学生兴趣,引导学生思考迷宫求解问题。
2. 理论知识讲解:介绍迷宫基本概念,讲解深度优先搜索、广度优先搜索等算法原理。
3. 算法分析与讨论:引导学生分析不同迷宫求解算法的特点,了解最短路径求解方法。
c语言迷宫求解课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组的使用,以及如何通过数组构建迷宫模型;2. 学生能够运用递归算法实现迷宫的求解过程;3. 学生能够理解并描述迷宫求解过程中所涉及到的算法策略和逻辑。
技能目标:1. 学生能够独立编写C语言代码,构建一个迷宫模型;2. 学生能够运用递归思想,实现迷宫的路径寻找;3. 学生能够通过调试和修改代码,优化迷宫求解算法。
情感态度价值观目标:1. 学生能够培养对编程的兴趣,增强对计算机科学的热爱;2. 学生能够通过团队协作,培养沟通和协作能力,感受合作的重要性;3. 学生能够在面对问题时,保持积极的态度,勇于尝试和克服困难。
课程性质:本课程为实践性较强的编程课程,要求学生在理解理论知识的基础上,动手实践,培养编程技能。
学生特点:考虑到学生处于高年级,具备一定的C语言基础,但对于复杂算法的理解和应用尚需引导。
教学要求:教师需注重理论与实践相结合,引导学生通过实际操作,掌握迷宫求解的编程技巧。
同时,关注学生的情感态度,激发学生的学习兴趣和积极性。
在教学过程中,将目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. C语言基础回顾:数组的使用,包括一维数组、二维数组的定义、初始化和访问;2. 迷宫模型构建:介绍迷宫的概念,学习如何使用二维数组构建迷宫模型,理解迷宫的基本元素和表示方法;3. 递归算法原理:讲解递归的概念,分析递归算法在迷宫求解中的应用,掌握递归调用的过程和条件;4. 迷宫求解算法:学习深度优先搜索(DFS)算法,探讨其在迷宫求解中的应用,分析算法的优缺点;5. 代码编写与调试:根据教学要求,编写C语言代码实现迷宫模型构建和求解,学习使用调试工具进行代码调试和优化;6. 教学案例分析:分析典型迷宫求解案例,了解不同算法策略的优缺点,培养学生解决问题的能力。
教学内容安排和进度:1. 第一课时:C语言基础回顾,迷宫模型构建;2. 第二课时:递归算法原理,迷宫求解算法介绍;3. 第三课时:代码编写与调试,学生实践操作;4. 第四课时:教学案例分析,学生讨论和总结。
迷宫寻路c语言课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中的基本语法结构,如变量声明、循环控制(for、while)和条件判断(if-else)。
2. 学生能够运用数组解决迷宫问题,理解二维数组在表示迷宫地图中的应用。
3. 学生能够描述并实现深度优先搜索(DFS)和广度优先搜索(BFS)算法在迷宫寻路中的应用。
技能目标:1. 学生能够设计并编写简单的C程序来解决迷宫寻路问题,培养编程思维和问题解决能力。
2. 学生通过迷宫程序的调试和优化,培养代码测试与错误排查的能力。
3. 学生能够通过团队协作,共同完成复杂迷宫的路径查找,提高团队沟通与协作技巧。
情感态度价值观目标:1. 学生在编程实践中培养耐心、细心和逻辑思维能力,形成积极面对困难的良好心态。
2. 学生通过解决迷宫问题,体会编程的乐趣和成就感,增强对计算机科学的兴趣和认识。
3. 学生在小组合作中学会尊重他人意见,培养集体荣誉感和合作精神。
课程性质分析:本课程设计属于实践性较强的信息技术学科课程,以项目驱动的形式进行,强调理论与实践相结合,注重培养学生的动手能力和实际问题解决能力。
学生特点分析:考虑到学生处于能够理解抽象概念,具备一定逻辑推理能力的年级,课程设计将结合学生的好奇心和求知欲,通过解决迷宫寻路问题,激发学生的学习兴趣。
教学要求:1. 教师应引导学生掌握C语言基础,强调算法在实际问题中的应用。
2. 教学过程中鼓励学生主动探索和尝试,注重启发式教学。
3. 教学评估应关注学生的程序编写能力、问题解决策略及合作交流能力。
二、教学内容1. C语言基础回顾:变量定义、基本数据类型、运算符、控制结构(if-else、for、while)。
2. 数组与二维数组:数组的定义与使用,二维数组在表示迷宫地图中的应用。
3. 函数的定义与调用:编写自定义函数处理迷宫问题,如判断路径可行性、打印路径等。
4. 深度优先搜索(DFS)算法:介绍DFS算法原理,编写DFS算法寻找迷宫路径。
迷宫问题求解课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的图形表示和抽象表示方法。
2. 学生能掌握深度优先搜索、广度优先搜索等基本算法,并运用到迷宫问题求解中。
3. 学生能了解启发式搜索算法,如A*算法,并理解其在迷宫问题中的应用。
技能目标:1. 学生能够运用所学算法,独立设计并实现迷宫问题的求解程序。
2. 学生能够分析不同算法在解决迷宫问题时的优缺点,并进行比较和优化。
3. 学生能够通过小组合作,共同探讨迷宫问题的解决方案,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生培养对算法和编程的兴趣,激发学习计算机科学的热情。
2. 学生通过解决实际问题,增强自信心和成就感,提高面对复杂问题的勇气和毅力。
3. 学生在团队协作中学会尊重他人、倾听意见,培养良好的合作精神和沟通能力。
分析课程性质、学生特点和教学要求:本课程为信息技术或计算机科学相关课程,旨在培养学生运用算法解决实际问题的能力。
学生处于中学高年级,具备一定的编程基础和逻辑思维能力。
教学要求注重理论与实践相结合,鼓励学生动手实践和合作探究,以实现以下具体学习成果:1. 学生能够自主设计并实现迷宫问题的求解程序。
2. 学生能够分析比较不同算法的性能,并进行优化。
3. 学生能够在团队中发挥各自优势,共同解决问题,提高沟通和协作能力。
二、教学内容1. 迷宫问题基本概念:迷宫的图形表示与抽象表示,介绍迷宫问题的定义和特点。
相关教材章节:第二章 算法基础,第三节 图的表示与应用。
2. 深度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第一节 深度优先搜索。
3. 广度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第二节 广度优先搜索。
4. 启发式搜索算法:A*算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第四节 启发式搜索。
求迷宫问题就是求出从入口到出口的路径。
在求解时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前试探,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续试探,直至所有可能的通路都试探完为止。
为了保证在任何位置上都能沿原路退回(称为回溯),需要用一个后进先出的栈来保存从入口到当前位置的路径。
首先用如图所示的方块图表示迷宫。
对于图中的每个方块,用空白表示通道,用阴影表示墙。
所求路径必须是简单路径,即在求得的路径上不能重复出现同一通道块。
为了表示迷宫,设置一个数组mg,其中每个元素表示一个方块的状态,为0时表示对应方块是通道,为1时表示对应方块为墙,如图所示的迷宫,对应的迷宫数组mg如下:int mg[M+1][N+1]={ /*M=10,N=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} }; 伪代码:c语言描述如下:void mgpath() /*路径为:(1,1)->(M-2,N-2)*/ {int i,j,di,find,k;top++; /*初始方块进栈*/Stack[top].i=1;Stack[top].j=1;Stack[top].di=-1;mg[1][1]=-1;while (top>-1) /*栈不空时循环*/{i=Stack[top].i;j=Stack[top].j;di=Stack[top].di;if (i==M-2 && j==N-2) /*找到了出口,输出路径*/{printf("迷宫路径如下:\n");for (k=0;k<=top;k++){printf("\t(%d,%d)",Stack[k].i,Stack[ k].j);if ((k+1)%5==0) printf("\n");}printf("\n");return;}find=0;while (di<4 && find==0) /*找下一个可走方块*/{ di++;switch(di){case 0:i=Stack[top].i-1;j=Stack[top].j ;break;case 1:i=Stack[top].i;j=Stack[top].j +1;break;case 2:i=Stack[top].i+1;j=Stack[top].j ;break;case 3:i=Stack[top].i;j=Stack[top] .j-1;break;}if (mg[i][j]==0) find=1;}if (find==1) /*找到了下一个可走方块*/{Stack[top].di=di; /*修改原栈顶元素的di值*/top++; /*下一个可走方块进栈*/Stack[top].i=i ;Stack[top].j=j ;Stack[top].di= -1;mg[i][j]=-1; /*避免重复走到该方块*/ }else /*没有路径可走,则退栈*/{ mg[Stack[top].i][Stack[top].j]=0;/*让该位置变为其他路径可走方块*/top--;}}printf("没有可走路径!\n");}。
课程设计求解迷宫问题一、教学目标本课程旨在通过求解迷宫问题,使学生掌握迷宫问题的基本概念、求解方法和算法。
具体目标如下:1.了解迷宫问题的定义、分类和应用场景。
2.掌握迷宫问题的基本求解方法,如深度优先搜索、广度优先搜索、启发式搜索等。
3.理解迷宫问题的算法复杂度和优化方法。
4.能够运用深度优先搜索、广度优先搜索、启发式搜索等方法解决实际迷宫问题。
5.能够分析迷宫问题的特点,选择合适的算法进行求解。
6.能够编写程序实现迷宫问题的求解算法。
情感态度价值观目标:1.培养学生的逻辑思维能力和问题解决能力。
2.激发学生对计算机科学和的兴趣。
3.培养学生的团队合作意识和交流表达能力。
二、教学内容本课程的教学内容主要包括迷宫问题的基本概念、求解方法和算法。
具体安排如下:1.迷宫问题的定义、分类和应用场景。
2.深度优先搜索算法及其实现。
3.广度优先搜索算法及其实现。
4.启发式搜索算法及其实现。
5.迷宫问题的算法复杂度和优化方法。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。
具体方法如下:1.讲授法:通过讲解迷宫问题的基本概念、求解方法和算法,使学生掌握相关知识。
2.案例分析法:通过分析实际案例,使学生更好地理解迷宫问题的求解方法和算法。
3.实验法:让学生动手编写程序,实现迷宫问题的求解算法,提高学生的实际操作能力。
4.讨论法:学生进行分组讨论,培养学生的团队合作意识和交流表达能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《计算机科学导论》相关章节。
2.参考书:《算法导论》等相关书籍。
3.多媒体资料:相关教学PPT、视频资料等。
4.实验设备:计算机、编程环境等。
通过以上教学资源的使用,我们将帮助学生更好地掌握迷宫问题的求解方法和算法,提高他们的计算机科学素养。
五、教学评估为了全面、客观、公正地评估学生在课程中的学习成果,我们将采用多种评估方式相结合的方法。
解决迷宫问题课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的构造特点和解题策略。
2. 学生能运用所学的图论知识,分析迷宫的路径问题,并建立相应的数学模型。
3. 学生了解并掌握深度优先搜索、广度优先搜索等迷宫问题解决方法。
技能目标:1. 学生能够运用所学知识,独立设计并解决简单的迷宫问题。
2. 学生能够运用图论分析方法,进行迷宫路径的优化设计。
3. 学生通过解决迷宫问题,培养逻辑思维和问题解决能力,提高编程实践操作技能。
情感态度价值观目标:1. 学生在解决迷宫问题的过程中,培养团队协作精神,学会与他人分享和交流。
2. 学生通过探索迷宫问题,激发对数学、计算机科学的兴趣和热情,增强自信心。
3. 学生在学习过程中,认识到解决问题的重要性,培养面对挑战时的坚持和毅力。
课程性质:本课程为信息技术与数学相结合的跨学科课程,旨在通过解决迷宫问题,提高学生的编程能力、逻辑思维和数学建模能力。
学生特点:六年级学生具备一定的数学基础和计算机操作能力,对新鲜事物充满好奇心,但问题解决能力和团队协作能力有待提高。
教学要求:教师需结合学生特点,采用任务驱动、分组合作等教学方法,引导学生主动探索迷宫问题,培养学生的实践能力和创新精神。
在教学过程中,注重对学生的引导和激励,关注个体差异,确保每个学生都能在课程中取得具体的学习成果。
二、教学内容1. 迷宫问题基本概念:迷宫的定义、分类及其构造特点。
- 教材章节:第三章“图论基础”,第1节“图的概念与表示方法”2. 图论知识在迷宫问题中的应用:路径、连通性、最短路径等。
- 教材章节:第三章“图论基础”,第2节“图的路径问题”3. 迷宫问题解决策略:深度优先搜索、广度优先搜索、启发式搜索等。
- 教材章节:第四章“搜索算法”,第1节“深度优先搜索”与第2节“广度优先搜索”4. 编程实践:运用所学的迷宫问题解决策略,编写程序解决迷宫问题。
- 教材章节:第五章“编程实践”,第3节“迷宫问题编程实践”5. 迷宫路径优化设计:结合图论知识,对迷宫路径进行优化设计。
迷宫求解c语言课程设计一、课程目标知识目标:1. 理解并掌握C语言中数组、函数、循环和条件语句的基本概念和应用;2. 学会设计并实现迷宫的基本结构,掌握迷宫的创建和展示方法;3. 掌握深度优先搜索(DFS)和广度优先搜索(BFS)算法在迷宫求解中的应用。
技能目标:1. 能够运用C语言编写程序,创建并展示迷宫;2. 能够运用DFS和BFS算法,实现迷宫的有效求解;3. 培养学生的编程思维,提高问题分析、程序设计和调试能力。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发学习积极性;2. 培养学生面对问题时的耐心和毅力,增强克服困难的信心;3. 培养学生的团队合作精神,提高沟通与协作能力。
本课程针对高中年级学生,结合C语言编程知识,以迷宫求解为背景,设计具有挑战性和实用性的课程内容。
课程注重培养学生的编程技能和逻辑思维能力,同时关注情感态度价值观的引导。
通过本课程的学习,学生将能够掌握C 语言编程的基本技巧,提高解决实际问题的能力。
课程目标具体明确,便于后续教学设计和评估。
二、教学内容1. C语言基础回顾:数组、函数、循环和条件语句的基本概念及应用;相关教材章节:第二章 数组与函数、第三章 控制语句。
2. 迷宫基本结构设计:- 迷宫的表示方法:二维数组;- 迷宫的创建:随机生成、预置路径;- 迷宫的展示:打印迷宫。
相关教材章节:第四章 函数与数组、第六章 编程实例。
3. 迷宫求解算法:- 深度优先搜索(DFS)算法原理与实现;- 广度优先搜索(BFS)算法原理与实现;- 算法比较与分析。
相关教材章节:第七章 算法初步、第八章 搜索算法。
4. 程序编写与调试:- 编写C语言程序实现迷宫创建、展示和求解;- 调试技巧与优化方法;- 团队合作与分工。
相关教材章节:第九章 程序调试与优化、第十章 团队协作。
教学内容根据课程目标进行选择和组织,注重科学性和系统性。
教学大纲明确教学内容安排和进度,与教材章节紧密关联,确保学生能够扎实掌握C语言编程知识,并应用于迷宫求解问题。
c 课程设计迷宫游戏一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言设计简单的迷宫游戏。
具体目标如下:1.理解C语言的基本语法和数据类型。
2.掌握C语言的运算符和表达式。
3.熟悉C语言的函数和数组。
4.能够使用C语言编写简单的程序。
5.能够运用C语言设计迷宫游戏的算法。
6.能够运用C语言实现迷宫游戏的界面和交互。
情感态度价值观目标:1.培养学生的编程兴趣和自信心。
2.培养学生的解决问题和团队合作的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法和数据类型、运算符和表达式、函数和数组。
具体安排如下:1.C语言的基本语法和数据类型:介绍C语言的基本结构和语法规则,包括变量、常量、数据类型、运算符等。
2.运算符和表达式:介绍C语言中的各种运算符和表达式的使用方法,包括算术运算符、关系运算符、逻辑运算符等。
3.函数和数组:介绍C语言中的函数定义和调用方法,包括主函数、参数传递、返回值等。
同时介绍数组的概念和用法,包括一维数组、多维数组等。
三、教学方法本课程的教学方法采用讲授法、案例分析法和实验法相结合的方式。
1.讲授法:通过讲解和示例的方式,使学生掌握C语言的基本语法和数据类型、运算符和表达式、函数和数组等知识点。
2.案例分析法:通过分析和解剖迷宫游戏的案例,使学生掌握迷宫游戏的算法和实现方法。
3.实验法:通过上机实验,使学生亲手编写C语言程序,巩固所学知识,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选择合适的C语言教材,用于学生学习和参考。
2.参考书:提供相关的C语言编程参考书籍,供学生深入学习和参考。
3.多媒体资料:制作教学PPT和视频教程,用于辅助教学和学生的自学。
4.实验设备:提供计算机实验室,让学生进行上机实验和编程实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评估学生的学习成果。
求解迷宫问题-(c语言-很详细哦)
求迷宫问题就是求出从入口到出口的路径。
在求解时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前试探,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续试探,直至所有可能的通路都试探完为止。
为了保证在任何位置上都能沿原路退回(称为回溯),需要用一个后进先出的栈来保存从入口到当前位置的路径。
首先用如图3.3所示的方块图表示迷宫。
对于图中的每个方块,用空白表示通道,用阴影表示墙。
所求路径必须是简单路径,即在求得的路径上不能重复出现同一通道块。
为了表示迷宫,设置一个数组mg,其中每个元素表示一个方块的状态,为0时表示对应方块是通道,为1时表示对应方块为墙,如图3.3所示的迷宫,对应的迷宫数组mg如下:
int mg[M+1][N+1]={ /*M=10,N=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} }; 伪代码:
c语言描述如下:
void mgpath() /*路径为:(1,1)->(M-2,N-2)*/ {
int i,j,di,find,k;
top++; /*初始方块进栈*/
Stack[top].i=1;
Stack[top].j=1;
Stack[top].di=-1;
mg[1][1]=-1;
while (top>-1) /*栈不空时循环*/
{
i=Stack[top].i;
j=Stack[top].j;
di=Stack[top].di;
if (i==M-2 && j==N-2) /*找到了出口,输出路径*/
{
printf("迷宫路径如下:\n");
for (k=0;k<=top;k++)
{
printf("\t(%d,%d)",Stack[k].i,Stack[k] .j);
if ((k+1)%5==0) printf("\n");
}
printf("\n");
return;
}
find=0;
while (di<4 && find==0) /*找下一个可走方块*/
{ di++;
switch(di)
{
case 0:i=Stack[top].i-1;
j=Stack[top].j;
break;
case 1:i=Stack[top].i;
j=Stack[top].j+1;
break;
case 2:i=Stack[top].i+1;
j=Stack[top].j;
break;
case 3:i=Stack[top].i;
j=Stack[top].j -1;
break;
}
if (mg[i][j]==0) find=1;
}
if (find==1) /*找到了下一个可走方块*/
{
Stack[top].di=di; /*修改原栈顶元素的di值*/
top++; /*下一个可走方块进栈*/
Stack[top].i=i;
Stack[top].j=j;
Stack[top].di=-1;
mg[i][j]=-1; /*避免重复走到该方块*/ }
else /*没有路径可走,则退栈*/
{ mg[Stack[top].i][Stack[top].j]=0;
/*让该位置变为其他
路径可走方块*/
top--;
}
}
printf("没有可走路径!\n");
}。