文档库 最新最全的文档下载
当前位置:文档库 › 迷宫问题的求解的设计说明书

迷宫问题的求解的设计说明书

迷宫问题的求解的设计说明书
迷宫问题的求解的设计说明书

数据结构课程设计

设计说明书

迷宫问题的求解

学生姓名

学号

班级

成绩

指导教师

计算机科学与技术系

2010年9月10日

数据结构课程设计评阅书

题目迷宫问题的求解

学生姓名学号

指导教师评语及成绩

成绩:教师签名:年月日答辩教师评语及成绩

成绩:教师签名:年月日教研室意见

总成绩:室主任签名:年月日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。

课程设计任务书

2010—2011学年第一学期

专业:计算机科学与技术学号:姓名:

课程设计名称:数据结构课程设计

设计题目:迷宫问题的求解

完成期限:自2010 年08 月30 日至2010 年09 月12 日共 2 周

设计内容:

用C/C++设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

设计要求:

1)问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?确定问题的输入数据集合。

2)逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;

3)详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;

4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚;

5)程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;

6)结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算法的时间、空间复杂性分析;

7)编写课程设计报告;

以上要求中前三个阶段的任务完成后,先将设计说明书的草稿交指导老师面审,审查合格后方可进入后续阶段的工作。设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。

指导教师(签字):教研室主任(签字):

批准日期:年月日

摘要

设计了一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。该程序按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型,主程序包括构造一个空栈(InitStack)、设计迷宫(MakeMaze)、寻找迷宫路径(MazePath)、输出迷宫(Print)等模块。本程序采用VC++作为软件开发环境,采用了栈、结构体、数组来实现。操作简单,容易理解。

关键词:迷宫;栈;数据结构

目录

1 课题描述 (1)

2问题分析 (2)

3 主要算法和流程图 (3)

3.1 主要算法 (3)

3.2 流程图 (4)

4 程序源代码 (8)

5运行结果 (13)

6 总结 (15)

参考文献 (16)

1 课题描述

迷宫问题的求解通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换另一个方向再继续探索,直至所有可能的通路都探索到为止。因此,在求迷宫通路的算法中需要一个后进先出的结构——“栈”。在迷宫求解问题的程序设计中求出一条从入口到出口的通路,或得出没有通路的结论。

假设“当前位置”指的是“在搜索过程中某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置“可通”,则纳入“当前路径”,并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周四个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是“当前位置”四周四个方向(东、南、西、北)上相邻的方块。由此,“纳入路径”的操作即为“当前位置入栈”;“从当前路径上删除前一通道块”的操作即为“出栈”。

迷宫问题的求解以Visual C++6.0作为开发工具。

2问题分析

迷宫问题的求解主要应用栈,栈的基本操作除了在栈顶插入或删除外,还有栈的初始化、判空及取栈顶元素等。栈的数据元素类型在应用程序内定义,并称插入元素的操作为入栈,删除栈顶元素的操作为出栈。

本设计采用栈、结构体、数组实现迷宫问题的求解,主程序中包括初始化栈(InitStack)、入栈(PushStack)、出栈(PopStack)、留下足迹(FootPrint)、探索方向(NextPos)、判断足迹是否走过(Pass)、判断栈是否空(StackEmpty)、留下不能通过的标记(MarkPrint)、设计迷宫(MakeMaze)、寻找迷宫路径(MazePath)以及输出迷宫(Print)。

程序设计中用到了if-else选择语句、if选择语句、switch控制语句、for循环语句、do-while循环语句以及while循环语句。

3 主要算法和流程图

3.1 主要算法

求迷宫中一条从入口到出口的路径的算法可简单描述如下:

设定当前位置的初值为入口位置;

do{

若当前位置可通,

则{将当前位置插入栈顶; //纳入路径若该位置是出口位置,则结束; //求得路径存放在栈中

否则切换当前位置的东邻块为新的当前位置;

}

否则,

若栈不空且栈顶位置尚有其他方向未经探索,

则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;

若栈不空但栈顶位置的四周均不可通;

则{删去栈顶位置; //从路径中删去该通道块若栈不空,则重新测试新的栈顶位置,

直至找到一个可通的相邻块或出栈至栈空;

}

3.2 流程图

本设计采用栈、结构体、数组实现迷宫问题的求解。下面给出迷宫问题的求解程序中下一步的探索方向(NextPos)、设计迷宫(MakeMaze)、寻找迷宫路径(MazePath)以及输出迷宫(Print)的流程图。其中图3.2.1为下一步的探索方向(NextPos)的流程图:

开始

sit &c,int

dir,sit C;

dir==1; dir==2; dir==3; dir==4;

C.seatx=c.seatx;

C.seaty=c.seaty+1;

C.seatx=c.seatx+1;

C.seaty=c.seaty;

C.seatx=c.seatx;

C.seaty=c.seaty-1;

C.seatx=c.seatx-1;

C.seaty=c.seaty;

return C;结束Y Y Y Y

N

N

N

N

图3.2.1下一步的探索方向(NextPos)的流程图

图3.2.2为设计迷宫(MakeMaze )的流程图:

图3.2.2设计迷宫(MakeMaze )的流程图

开始

int i,j;

输入一个M*M 的迷宫

i=0;

i

j=0;

j

输入Maze[i][j];

j++;

i++;

调用Print 函数;

结束

N

N

Y Y

图3.2.3为寻找迷宫路径(MazePath )的流程图:

开始

Stack S;finds e;sit start,end,curpos;int curstep;

调用函数InitStack;

调用函数(Pass(curpos);

调用函数FootPrint(curpos);留下足迹调用函数PushStack(S,e);加入路径

curpos==end;

探索下一步

!StackEmpty(S);

调用函数PopStack(S,e);

e.di==4&&!StackEmpty(S);

留下不能通过的标记,并退回一步

e.di<4;

e.di++;换下一个方向探索;

存在路径,到达终点

结束

!StackEmpty(S);

Y

N

N

Y

N

Y

N

Y

N

Y

Y

N

不存在路径

图3.2.3寻找迷宫路径(MazePath )的流程图

图3.2.4为输出迷宫(Print )的流程图:

开始

int i,j;

i=0;

i

j

Maze[i][j]==1;

Maze[i][j]==2;

Maze[i][j]==3;

标记" "

标记"■"

标记"×"

标记"㊣"

j++;

i++;

结束

Y Y Y Y N N N N

Y Y N

N

图3.2.4输出迷宫(Print )的流程图

4 程序源代码

#include //引用库函数

#include

#define STACK_INIT_SIZE 300

#define STACKINCREMENT 20

#define M 10 //迷宫的最大坐标

typedef int MazeType[M][M];

typedef struct{

int seatx;

int seaty;

}sit; //迷宫坐标

typedef struct{

int ord;

sit seat;

int di; //从此通道块走向下一通道块的方向

}finds; //0:无效,1:东,2:南,3:西,4:北

typedef struct{

finds *base;

finds *top;

int stacksize;

}Stack;

MazeType Maze;

sit start,end; //start,end入口和出口的坐标

int InitStack(Stack &S) //构造一个空栈

{

S.base=(finds*)malloc(STACK_INIT_SIZE*sizeof(finds));

if(!S.base)exit(1);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return 1;

}

void Print(){ //输出迷宫

int i,j;

for(i=0;i

for(j=0;j

if(Maze[i][j]==0)printf(" ");

else if(Maze[i][j]==1)printf("■");

else if(Maze[i][j]==3)printf("×");

else if(Maze[i][j]==2)printf("㊣");

}

printf("\n");

}

}

void MakeMaze(){ //设计迷宫

int i,j;

printf("\n======================欢迎进入迷宫游戏======================\n");

printf("\n 说明:由玩家输入一个迷宫,系统会在很短时间内判断出行走路径!\n");

printf("\n\t\t\t祝您游戏愉快!\n");

printf("\n======================Good Luck To You======================\n");

printf("\n===>请设计一个迷宫<===\n");

printf("\n输入一个 %d * %d 的迷宫【包括外墙】:\n",M,M);

for(i=0;i

for(j=0;j

scanf("%d",&Maze[i][j]);

printf("\n");

printf("迷宫结构如下:\n");

Print();

}

void PushStack(Stack &S,finds e){ //增加栈顶

if(S.top-S.base>=S.stacksize){

S.base=(finds*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(fin ds));

if(!S.base)exit(1);

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

}

int PopStack(Stack &S,finds &e){ //删除栈顶

if(S.top==S.base)

return 0;

e=*--S.top;

return 1;

}

void FootPrint(sit s){//走过的路经留下足迹,也就是将坐标值为非零

Maze[s.seatx][s.seaty]=2;

}

sit NextPos(sit &c,int dir){ //规定下一步试探的方向

sit C;

switch(dir){

case 1:C.seatx=c.seatx;

C.seaty=c.seaty+1;

break;

case 2:C.seatx=c.seatx+1;

C.seaty=c.seaty;

break;

case 3:C.seatx=c.seatx;

C.seaty=c.seaty-1;

break;

case 4:C.seatx=c.seatx-1;

C.seaty=c.seaty;

break;

}

return C;

}

int Pass(sit a){ //判断该足迹是否走过,走过为1否则为0,进行下一步试探

if(Maze[a.seatx][a.seaty]==0)

return 1;

else return 0;

}

int StackEmpty(Stack &S) { //判断栈是否为空,如果为空则返回1,否则返回0

if(S.top==S.base) return 1;

else return 0;

}

int MarkPrint(sit b){ //留下不能通过的标记

Maze[b.seatx][b.seaty]=3;

return 1;

}

int MazePath(sit start,sit end){ //若迷宫maze中存在从入口start到出口end的通道,则求的一条存放在栈中(从栈底到栈顶)

Stack S;

finds e; //栈元素

sit curpos; //当前位置

int curstep=1;

InitStack(S);

curpos=start; //设定“当前位置”为“入口位置”

do{

if(Pass(curpos)){//当前位置可以通过,即是未曾走到过的通道块

FootPrint(curpos); //留下足迹

e.di=1;

e.ord=curstep;

e.seat=curpos;

PushStack(S,e); //加入路径

if(curpos.seatx==end.seatx&&curpos.seaty==end.seaty){

printf("\n此迷宫存在通道:\n");

return 1; //到达终点(出口)

}

curpos=NextPos(curpos,1); //下一个位置是当前位置的东邻

curstep++; //探索下一步

}//if

else{ //当前位置不能通过

if(!StackEmpty(S)){

PopStack(S,e);

while(e.di==4&&!StackEmpty(S)){

MarkPrint(e.seat);

PopStack(S,e); //留下不能通过的标记,并退回一步

} //while

if(e.di<4){

e.di++;

PushStack(S,e); //换下一个方向探索

curpos=NextPos(e.seat,e.di); //设定当前位置是该新方向上的相邻块

}//if

}//if

}//else

}while(!StackEmpty(S));

printf("\n此迷宫不存在通道!\n");

return 0;

}

void main(){ //主函数

MakeMaze();

printf("\n请输入入口的横坐标,纵坐标(用逗号隔开): ");

scanf("%d,%d",&start.seatx,&start.seaty);

printf("\n请输入出口的横坐标,纵坐标(用逗号隔开): ");

scanf("%d,%d",&end.seatx,&end.seaty);

MazePath(start,end);

Print();

printf("\n==========感谢您的使用,程序退出!==========\n"); }

5运行结果

按要求输入迷宫,若存在从入口到出口的通路,运行结果如图5.1所示:

图5.1 存在从入口到出口的通路

不存在从入口到出口的通路,运行结果如图5.2所示:

图5.2不存在从入口到出口的通路

6 总结

课程设计的过程是非常不容易的,但对我却有很大的启发。这次课程设计我主要是应用C语言、VisualC++以及数据结构,综合起来才完成迷宫问题的求解,比平常上机实验所编程序要复杂,锻炼了我自己。

首先,数据结构程序设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识;再次,我在课程设计中碰到了很多的问题,通过查阅相关资料以及上网查询进行解决,同时高虎老师对我也进行了指导,指出了课程设计流程中的错误,提出了建议。

越来越多的人们开始依靠计算机来解决自己遇到的问题,计算机可以明显提高速度和准确率。我所设计的求迷宫中从入口到出口的所有路径是一个典型的程序设计问题。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,不断进取,能使自己在编程这方面有一个大的发展。

迷宫问题课程设计报告

目录 第一章:设计问题描述与分析 (1) 1.1.课程设计内容 (1) 1.2. 问题分析 (1) 1.3.功能实现 (2) 1.4.运行环境 (3) 第二章:算法设计与流程图 (4) 2.1.主函数的流程图 (4) 2.2.概要设计 (5) 2.4详细设计 (6) 2.4.1. 节点类型和指针类型 (6) 2.4.2.迷宫的操作 (6) (1)生成迷宫 (6) (2)打印迷宫矩阵与字符图形 (7) (3)迷宫求解路由求解操作 (7) (4)打印迷宫通路坐标 (8) (5)输出迷宫通路的字符图形 (8) 2.4.3. 主函数 (9) 第三章:调试分析 (10) 第四章:使用说明 (11)

第五章:测试结果 (12) 附录1 (19) 附录2 (19)

第一章:设计问题描述与分析 1.1.课程设计内容: 该系统是由C 语言编写的生成一个N×M(N行M列)的迷宫,完成迷宫的组织和存储,并实现迷宫路由算法。基本要求1、 N和M是用户可配置的,缺省值为50和50。 2、迷宫的入口和出口分别在左上角和右下角。 提示:(1)可以使用二维数组maze[M+2][N+2]表示迷宫,其中M,N为迷宫的行、列数,当元素值为0时表示该点是通路,当元素值为1时表示该点是墙。老鼠在每一点都有4种方向可以走,可以用数组move[4]来表示每一个方向上的横纵坐标的偏移量,可用另一个二维数组mark[M+2][N+2]记录节点的访问情况。(2)可以选用深度优先算法或广度优先算法实行,迷宫可由自动或手动生成。测试用例应该包含有解迷宫和无解迷宫。 1.2. 问题分析 本程序要求实现迷宫问题的相关操作,包括迷宫的组织和存储,并实现迷宫路由算法(即查找迷宫路径)。程序所能达到的:具体包括迷宫的建立,迷宫的存储(迷宫由自动生成或手动生成),迷宫中路径的查找 迷宫是一个矩形区域,迷宫存在一个入口和一个出口,其内部包含了不能穿越的墙或者障碍。迷宫的建立即是建立这样一个迷宫矩阵,用于存储迷宫信息,包括可穿越的路和不可穿越的墙或者障碍,分别用0表示通路,1表示障碍。对于迷宫矩阵,用m×n的矩阵来描述,m和n分别代表迷宫的行数和列数。这样,则迷宫中的每个位置都可以用其行号和列号来指定。从入口到出口的路径是由一组位置构成的。每个位置上都没有障碍,且每个位置(第一个除外)都是前一个位置的上、下、左、右的邻居。 为了描述迷宫中位置(i ,j)处有无障碍,规定,当位置(i ,j)处有一个障碍时,其值为1,否则为0.这样迷宫就可以用0、1矩阵来描述,在构造矩阵时,为了操作方便会将矩阵四周置为1(不通)。

课程设计报告示例:迷宫求解

安徽建筑大学 课程设计报告 课程名称:数据结构与算法课程设计 题目:迷宫求解 院系:数理系 专业:信息与计算数学 班级: 学号: 姓名: 时间:

目录 一、需求分析 (2) 1.问题描述: (2) 2.基本要求 (2) 二、概要设计 (3) 1.数据结构 (3) 2.程序模块 (3) 3.算法设计 (5) 三、详细设计 (7) 1.数据类型定义 (7) 2.函数实现代码 (7) 3.函数之间的调用关系 (7) 四、调试分析 (7) 五、用户手册 (8) 六、测试结果 (8) 七、参考文献 (9) 八、附录 (9)

迷宫求解题目: 以一个m×n长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。(1)以二维数组存储迷宫数据; (2)求得的通路以二元组( i , j )的形式输出,其中(i, j)指示迷宫中的一个坐标。 一、需求分析 1. 问题描述: 在迷宫中求出从入口到出口的路径。经分析,一个简单的求解方法是:从入口出发,沿某一方向进行探索,若能走通,则继续向前走;否则沿原路返回,换一方向再进行搜索,直到所有可能的通路都探索到为止。即所谓的回溯法。 求迷宫中从入口到出口的所有路径是一个经典的程序设计问题。由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中应用“栈”也就是自然而然的事了。 假设“当前位置”指的是“在搜索过程中某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置"可通",则纳入"当前路径",并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周四个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是“当前位置”四周四个方向(东、南、西、北)上相邻的方块。 2. 基本要求 (1)以二维数组maze.adr[m+1][n+1]表示迷宫,其中mg[0][j]和mg[m+1][j](0 j n)及mg[i][0]和mg[i][n](0 i m)为添加的一圈障碍,数组中以元素值为0表示通路,1表示障碍,限定迷宫大小m,n 10。 (2)用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数m 和列数n;从第2行至第m+1行(每行n个数)为迷宫值,同一行的两个数之间用空 白字符相隔。 (3)迷宫入口为(1,1),出口为(m,n)。 (4)每次移动只能从一个无障碍的单元到周围8个方向上任意无障碍的单元,编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。 (5)本程序只求出一条成功的通路。 3.测试数据见下表,当入口为(1,1)时,出口为(8,8) 用一个字符类型的二微数组表示迷宫,数组中的每个元素表示一个小方格,取值“0”(表示可以进出)或“1”(表示不可以进出) 随机产生一个8*8的迷宫,其中使用迷宫障碍坐标如下: (1,3),(1,7),(2,3),(2,7),(3,5),(3,6), (4,3),(4,4),(5,4),(6,2),(6,6),(7,2),(7,3), (7,4),(7,6),(7,7),(8,1)。

课程设计报告(迷宫)详解

武汉东湖学院计算机科学学院 课程设计报告 课程名称数据结构课程设 题目深度与广度优先搜索 迷宫问题 专业班级(请自己填写) 学号(请自己填写) 学生姓名(请自己填写) 指导教师吴佳芬 (请自己填写)年(请自己填写)月(请自己填写)日

武汉东湖学院计算机科学学院 课程设计任务书 课程名称:数据结构课程设计 设计题目:深度与广度优先搜索:迷宫问题 专业:(请自己填写)班级:(请自己填写) 完成时间:自己填写指导教师:吴佳芬专业负责人:许先斌

武汉大学东湖分校计算机科学学院 课程设计成绩评价表 指导教师:吴佳芬年月日

(由学生完成,以下为摸版) 【软件课程设计报告目录】 1、需求分析 说明程序设计的任务,强调的是程序要做什么,明确规定: (1)输入的形式和输入值的范围; (2)输出的形式; (3)程序所能达到的功能; (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 2、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 3、详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。 4、使用说明、测试分析及结果 (1)说明如何使用你编写的程序; (2)测试结果与分析; (3)调试过程中遇到的问题是如何解决提以及对设计与实现的回顾讨论和分析; (4)运行界面。 5、课程设计总结(设计心得) (1)你在编程过程中用时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题? (2)遇到了哪些难题?你是怎么克服的? (3)你对算法有什么改正想法吗? (4)你的收获有哪些? 参考文献 (由学生完成,以下为摸版,编页码:共x页,第x页)

数据结构迷宫问题课程设计

数据结构课程设计报告 设计题目:迷宫问题数据结构课程设计_ 班级:计科152 学号:19215225 姓名:徐昌港 南京农业大学计算机系

数据结构课程设计报告内容 一.课程设计题目 迷宫问题 以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 二.算法设计思想 1.需求分析 (1)迷宫数据用一个二维数组int maze[row][col]来存储,在定义了迷宫的行列数后,用两个for循环来录入迷宫数据,并在迷宫周围加墙壁。 (2)迷宫的入口位置和出口位置可以由用户自己决定。 2.概要设计 (1)主程序模块: void main() { int maze[row][col]; struct mark start,end; //出入口的坐标 int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; //方向,依次是东西南北 built_maze(maze); printf("请输入入口的横纵坐标:"); scanf("%d,%d",&start.a,&start.b); printf("请输入出口的横纵坐标:");

scanf("%d,%d",&end.a,&end.b); printf("0为东,1为南,2为西,3为北,-1为出路\n"); maze_path(maze,dir,start,end); getchar(); } (2)栈模块——实现栈抽象数据类型 (3)迷宫模块——实现迷宫抽象数据类型,建立迷宫,找出迷宫的一条通路 3.详细设计 (1)坐标位置类型 struct mark{ int a,b; //迷宫a行b列为位置 }; (2)迷宫类型 void built_maze(int maze[row][col]) //按照用户输入的row行和col列的二维数组(元素值为0和1) //设置迷宫maze的初值,包括边上边缘一圈的值 void maze_path(int maze[row][col],int dir[4][2],struct mark start,struct mark end) //求解迷宫maze中,从入口start到出口end的一条路径, //若存在,则返回TRUE;否则返回FALSE (3)栈类型 struct element{ int i,j,d; //坐标与方向 }; typedef struct Linkstack{ element elem;

迷宫与栈课程设计报告范例

(此文档为word格式,下载后您可任意编辑修改!) 北京理工大学珠海学院课程设计说明书 _2014_—_2015_学年第_一_学期 题目: 迷宫与栈 学院:计算机学院 专业班级:软件工程x班 学号 x 学生姓名: XXX 指导教师:何春香 成绩: 时间: 2014年 11 月 7日

附件4: 北京理工大学珠海学院 课程设计任务书 2014 ~2015 学年第学期 学生姓名:专业班级: 指导教师:何春香工作部门:软件工程教研室一、课程设计题目 迷宫与栈问题 二、课程设计内容(含技术指标) 【问题描述】 以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【任务要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。 编写递归形式的算法,求得迷宫中所有可能的通路。 以方阵形式输出迷宫及其通路。 【测试数据】 迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)

为出口。 出口 出口 三、进度安排 1.初步设计:写出初步设计思路,进行修改完善,并进行初步设计。 2.详细设计:根据确定的设计思想,进一步完善初步设计内容,按要求编写出数据结构类型定义、各算法程序、主函数。编译分析调试错误。 3.测试分析:设计几组数据进行测试分析,查找存在的设计缺陷,完善程序。 4.报告撰写:根据上面设计过程和结果,按照要求写出设计报告。 5.答辩考核验收:教师按组(人)检查验收,并提出相关问题,以便检验设计完成情况。 四、基本要求 1.在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。 2.在设计完成后,应当场运行和答辩,由指导教师验收,只有在验收合格后才能算设计部分的结束。 3.设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告以规定格式的电子文档书写、打印

大班科学《趣味迷宫》

大班科学活动:趣味迷宫 活动设计背景 走迷宫能有效地提高幼儿的有意注意和空间智能,帮助幼儿学会整体观察、全方位思考,培养幼儿逆向思维能力及沉着冷静、敢于挑战的品质等。 我班幼儿对走迷宫有一定经验,但能力参差不齐。有的幼儿能迅速判断并选择通畅的路径走出迷宫;有的幼儿很容易迷失方向,多次“碰壁”后才能走出迷宫;有的幼儿急于求成,缺乏一定的耐心,等等。基于此,我们设计了这个活动,将科学学习融入走迷宫游戏中感知迷宫,了解迷宫所含的基本秘密,培养幼儿的观察能力和思维能力,让幼儿在轻松愉快又富有挑战的情境中,提升经验,形成策略,巩固走迷宫的方法。 活动目标: 1.感知迷宫,了解迷宫所含的基本秘密。 2.培养幼儿的观察能力和思维能力。 3.体验迷宫游戏的乐趣。 活动准备: 1.自制迷宫图3副。 2.幼儿操作材料若干。 活动过程: 一、谈话引题: 1.小朋友,你们玩过“走迷宫”的游戏吗? 2.迷宫图上会有哪些标志呢? 二、分析迷宫图: (一)出示迷宫图一,初步感知迷宫。 1.从这张迷宫图上你看到了什么?√代表什么?×代表什么? 2.谁愿意上来走一走? (二)出示迷宫图二,剖析迷宫图的秘密。 1.从这张迷宫图上你看到了?知道了什么? 2.这两张迷宫图藏着一个共同的秘密,都有什么? 3.谁愿意大胆尝试帮小猪来搭桥? (三)出示自制迷宫半成品图,学习摆迷宫阵。 1.走迷宫看来难不到你们,那你们玩过摆迷宫阵的游戏吗? 2.今天我们来一起布迷宫阵,怎么摆放才能使迷宫阵觉得有难度、更好玩?

3.师生共同摆迷宫阵:第一步:放石头第二步:鳄鱼第三步…… 三、幼儿操作 1.幼儿第一次布迷宫阵,教师巡回指导,并用相机拍下幼儿摆的迷宫阵。 2.教师有针对性的多媒体展用示幼儿摆的迷宫阵,请幼儿说一说这幅迷宫图摆的好吗?好在哪里?不好,不好在哪里? 3.幼儿再次布迷宫阵,请旁边的小朋友来走迷宫阵。 四、展示幼儿设计的迷宫图 教师对幼儿设计的迷宫阵进行设当点评。 五、延伸活动: 出示图四:这张迷宫图和之前我们看到的有什么不一样?如果让你来走一走,你会吗?回去之后我们可以继续布迷宫阵,走迷宫图,比一比谁的办法多,谁的办法好。

迷宫求解数据结构课程设计

迷宫求解数据结构课程设计

《数据结构》课程设计 题目:迷宫求解 班级: 学号: 作者姓名: 指导教师: 2012年12月11日

目录 1.需求分析 (1) 2.概要设计 (1) 2.1.数据结构 (1) 2.1.1.逻辑结构 (1) 2.1.1.存储结构 (2) 2.2.基本操作 (3) 2.2.1.迷宫中栈的基本操作 (3) 2.2.2.迷宫的抽象数据类型 (3) 2.2.3.本程序包含三个模块 (4) 3.详细设计 (5) 4.调试与分析 (9) 5.用户手册 (9) 6. 测试结果 (10) 7. 附录 (12) 8. 参考文献 (12) 9、心得体会 (12) 10、小组成员工作分配 (13)

一、需求分析 (1)以二维数组maze[n+2][m+2]表示迷宫,其中:maze[0][j]和 maze[n+1][j](0<=j<=m+1)及maze[i][0]和maze[i][m+1](0<=i<=j+1)为添加的一圈障碍。数组中以元素值为0的表示通路,1表示障碍,限定迷宫的大小,m,n<=0。 (2)迷宫的入口位置和出口位置可由用户自行设定。 (3)如设定的迷宫处在通路,则值输出迷宫中的通路,即0,现实的0连起 来就是一个迷宫通路路径;如设定的迷宫中不出在通路,则输出“该迷宫找不到通路!”; (4)测试样例:输入迷宫的长宽为5和6,输入迷宫为: 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 当入口位置为(1,2),出口位置为(5,6)时,则输出数据为: # # # # # # # # # 0 # # 0 # # 0 0 # # 0 # # 0 0 0 0 # # # # # # # # # (5)程序执行的命令为: 1、输入迷宫的尺寸; 2、创建迷宫; 3、输入迷宫的的出入口位置; 4、求解迷宫;输出迷宫的解。 二、概要设计 2.1.数据结构 2.1.1、逻辑结构 1)栈的定义:限定仅在表尾进行插入或删除操作的线性表; 2)操作特性:后进先出; 3) ADT定义: ADT Stack{ 数据对象:D={ai|ai∈ CharSet,i=1,2,…,n,n>=0} 数据关系:R1={|ai-1,ai∈

《数据结构》课程设计报告-运动会分数统计 一元多项式 迷宫求解 文章编辑 纸牌游戏等

《数据结构》课程设计报告-运动会分数统计一元多项式迷宫求解文章编辑纸牌游戏等

南京林业大学 数据结构课程设计报告 专业:计算机科学与技术 课程名称:数据结构 姓名: 学号:090801126 指导老师: 时间: 2011年1月

目录要点: 一.具体内容(题目) (1) 二.需求分析(功能要求) (2) 三.概要设计(程序设计思想) (3) 四.详细设计(源代码) (6) 五.调试分析(运行结果显示及说明) (31) 六.课设总结 (34) 题目1: 运动会分数统计** 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7,5,3,2,1,取前三名的积分分别为:5,3,2,;哪些取前五名或前三名由学生自己设定。(m〈=20,n〈=20); 题目2:一元多项式** 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加,相减,并将结果输入; 题目4:迷宫求解 任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出; 题目5:文章编辑** 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 题目6:Joseph环 任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有的人出列为止。设计一个程序来求出出列的顺序。 2

c++课程设计迷宫问题求解

设计题目 迷宫问题求解 任务 迷宫问题是取自心理学的一个古典实验。实验中,把一只老鼠从一个没有顶的大盒子的门放入,在盒中设置了许多墙,对行进的方向形成了多处阻挡。盒子仅仅有一个出口,在出口处放置了一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。重复对老鼠进行上述实验,看老鼠能在多久找到出口。 功能要求: 请设计一个算法实现迷宫问题求解。 测试数据:0表示可以行走的区域,1表示不可行走的区域。

需求分析 该程序的实现需要用到栈,用栈来储存正确的步骤。首先要建立一个迷宫,用数组来实现。然后通过规定的放向依次探索,一步步找到正确的路径。 概要设计 typedef struct StackElem { int x; int y; int f; }StackElem; //定义栈 typedef struct { StackElem * base; StackElem * top; int StackSize; }Stack; //初始化栈 void StackInit(Stack *s) //向栈中添加元素 void Push(Stack *s,StackElem e) //获得栈顶元素 StackElem GetTop(Stack *s) /删除栈顶元素 void Pop(Stack *s) /判断当前位置是否走过(下一位置与Path中所有位置从栈顶至栈底依次比较) int unPass(Stack Path,StackElem Step /右边相邻的位置 StackElem Right(StackElem Step,int m,int n)(一共8个向函数类似) //获得下一个可通行的位置,逐个方向试探

数据结构课程设计迷宫求解

迷宫求解 一.问题描述 对迷宫问题的求解过程实际就是从入口开始,一步一步地走到出口的过程。 基本要求: 输入一个任意大小的迷宫数据,用递归和非递归两种方法求出一条走出迷宫的路径,并将路径输出。 二.设计思路 在本程序中用两种方法求解迷宫问题-非递归算法和递归算法。 对于非递归算法采用回溯的思想,即从入口出发,按某一方向向前探索,若能走通,并且未走过,则说明某处可以到达,即能到达新点,否则试探下一方向;若所有的方向均没有通路,或无路可走又返回到入口点。在求解过程中,为了保证在到达某一点后不能向前继续行走(无路)时,能正确返回前一点以便继续从下一个方向向前试探,则需要用一个栈保存所能到达的没一点的下标及该点前进的方向,然后通过对各个点的进出栈操作来求得迷宫通路。 对于递归算法,在当前位置按照一定的策略寻找下个位置,在下个位置又按照相同的策略寻找下下个位置…;直到当前位置就是出口点,每一步的走法都是这样的。随着一步一步的移动,求解的规模不断减小;如果起始位置是出口,说明路径找到,算法结束,如果起始位置的四个方向都走不通,说明迷宫没有路径,算法也结束。 另外,为了保证迷宫的每个点都有四个方向可以试探,简化求解

过程,将迷宫四周的值全部设为1,因此将m行n列的迷宫扩建为m+2行,n+2列,同时用数组来保存迷宫阵列。 三.数据结构设计 在迷宫阵列中每个点都有四个方向可以试探,假设当前点的坐标(x,y),与其相邻的四个点的坐标都可根据该点的相邻方位而得到,为了简化问题,方便求出新点的坐标,将从正东开始沿顺时针进行的这四个方向的坐标增量放在一个结构数组move[4]中,每个元素有两个域组成,其中x为横坐标增量,y为纵坐标增量,定义如下: typedef struct { int x,y; }item; 为到达了某点而无路可走时需返回前一点,再从前一点开始向下一个方向继续试探。因此,还要将从前一点到本点的方向压入栈中。栈中的元素由行、列、方向组成,定义如下: typedef struct { int x,y,d; }DataType; 由于在非递归算法求解迷宫的过程中用到栈,所以需定义栈的类型,本程序中用的是顺序栈,类型定义如下; typedef struct { DataType data[MAXSIZE]; int top; }SeqStack, *PSeqStack;

数据结构课程设计——迷宫问题课程设计报告

迷宫问题 ——王欣歆20080564 一.需求设计:以一个m*m 的方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口的通道,或得出没有通路的结论。二.概要设计: 存储结构: 采用了数组以及结构体来存储数据,在探索迷宫的过程中用到的栈,属于顺序存储结构。 /*八个方向的数组表示形式*/ int move[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1, 0},{-1, 1}}; /*用结构体表示位置*/ struct position { int x,y; }; position stack[m*m+1]; 基本算法: 走迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按东、东南、南、西南、西、西北、北、东北8个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果8个方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。 每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条通路;若退回到了入口处,则说明不存在通路。 用一个字符类型的二维数组表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出口点在位置(m,m)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。 二维数组的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宫的边界;第1行第1列元素和第m行第m列元素置成“0”,表示迷宫的入口和出口;其余元素值用随机函数产生。 假设当前所在位置是(x,y)。沿某个方向前进一步,它可能到达的位置最多有8个。 如果用二维数组move记录8个方向上行下标增量和列下标增量,则沿第i个方向前进一步,可能到达的新位置坐标可利用move数组确定: x=x+move[i][0] y=y+move[i][1] 从迷宫的入口位置开始,沿图示方向顺序依次进行搜索。在搜索过程中,每前进一步,在所到位置处做标记“ ” (表示这个位置在通路上),并将该位置的坐标压入栈中。 每次后退的时候,先将当前所在位置处的通路标记“ ”改 成死路标记“×”(表示这个位置曾到达过但走不通,以后 不要重复进入),然后将该位置的坐标从栈顶弹出。 678 51 432 x y o

《数据结构课程设计》走迷宫游戏

信息工程学院 课程设计报告 课程名称《数据结构》 课题名称走迷宫游戏 专业 班级 学号 姓名 联系方式 指导教师 2015 年 12 月 27 日

目录 1、数据结构课程设计任务书............................................................... 1 1.1、题目........................................................................... 1 1.2、要求........................................................................... 1 2、总体设计............................................................................. 1 2.1、设计思路及总体组成框架......................................................... 1 2.2、操作流程图..................................................................... 2 3、详细设计............................................................................. 5 3.1、程序中所采用的数据结构及存储结构的说明......................................... 5 3.2、函数功能模块说明............................................................... 5 3.3、各函数的调用关系 ............................................................................................................................... 7 4、调试与测试:......................................................................... 7 4.1、调试方法与步骤:............................................................... 7 4.2、测试结果的分析与讨论:......................................................... 8 4.3、测试过程中遇到的主要问题及采取的解决措施:................................... 10 6、源程序清单......................................................................... 10 7、数据结构课程设计总结............................................................... 14 8、参考文献........................................................................... 14

幼儿园大班科学公开课教案《趣味迷宫》

幼儿园大班科学公开课教案《趣味迷宫》 活动设计背景: 走迷宫能有效地提高幼儿的有意注意和空间智能,帮助幼儿学会 整体观察、全方位思考,培养幼儿逆向思维能力及沉着冷静、敢 于挑战的品质等。 我班幼儿对走迷宫有一定经验,但能力参差不齐。有的幼儿能迅 速判断并选择通畅的路径走出迷宫;有的幼儿很容易迷失方向, 多次碰壁后才能走出迷宫;有的幼儿急于求成,缺乏一定的耐心,等等。基于此,我们设计了这个活动,将科学学习融入走迷宫游 戏中感知迷宫,了解迷宫所含的基本秘密,培养幼儿的观察能力 和思维能力,让幼儿在轻松愉快又富有挑战的情境中,提升经验,形成策略,巩固走迷宫的方法。 活动目标: 1.感知迷宫,了解迷宫所含的基本秘密。 2.培养幼儿的观察能力和思维能力。

3.体验迷宫游戏的乐趣。 活动准备: 1.自制迷宫图3副。 2.幼儿操作材料若干。 活动过程: 一、谈话引题: 1.小朋友,你们玩过走迷宫的游戏吗? 2.迷宫图上会有哪些标志呢? 二、分析迷宫图: (一)出示迷宫图一,初步感知迷宫。 1.从这张迷宫图上你看到了什么?√代表什么?×代表什么? 2.谁愿意上来走一走? (二)出示迷宫图二,剖析迷宫图的秘密。 1.从这张迷宫图上你看到了?知道了什么?

2.这两张迷宫图藏着一个共同的秘密,都有什么? 3.谁愿意大胆尝试帮小猪来搭桥? (三)出示自制迷宫半成品图,学习摆迷宫阵。 1.走迷宫看来难不到你们,那你们玩过摆迷宫阵的游戏吗? 2.今天我们来一起布迷宫阵,怎么摆放才能使迷宫阵觉得有难度、更好玩? 3.师生共同摆迷宫阵:第一步:放石头第二步:鳄鱼第三步………… 三、幼儿操作 1.幼儿第一次布迷宫阵,教师巡回指导,并用相机拍下幼儿摆的 迷宫阵。 2.教师有针对性的多媒体展用示幼儿摆的迷宫阵,请幼儿说一说 这幅迷宫图摆的好吗?好在哪里?不好,不好在哪里? 3.幼儿再次布迷宫阵,请旁【大班科学教案/daban/kexue/】边 的小朋友来走迷宫阵。

迷宫课程设计

数学与计算机学院 课程设计说明书 【此页单独打印】 课程名称:数据结构与算法B综合课程设计 课程代码: 6013799 题目:DFS生成迷宫与迷宫的BFS、DFS搜索 年级/专业/班: 2012/计算机科学与技术/04班 学生姓名: 学号:312012********* 开始时间:2012 年12月 20 日 完成时间:2012 年12月 24 日 课程设计成绩: 指导教师签名:年月日

课程设计题目名称 目录 摘要 1 前言 (4) 1.1问题的提出 (4) 1.2任务与分析 (4) 2.软件总体设计 (5) 2.1开发工具 (5) 2.2系统框图 (5) 2.3模块功能 (6) 2.3.1 绘图模块 ................................................................................. 错误!未定义书签。 2.3.2 DFS模块.................................................................................. 错误!未定义书签。 2.3.3 BFS模块…… .......................................................................... 错误!未定义书签。 3.人机界面设计 (4) 3.1 客户区原始界面 (4) 3.2 迷宫拆墙界面 (4) 3.3 DFS走迷宫界面 (4) 3.4 BFS走迷宫界面 (4) 4. 功能详细设计 (7) 4.1绘墙 ................................................................................................ 错误!未定义书签。 4.2拆墙 ................................................................................................ 错误!未定义书签。 4.3迷宫信息文本存储 ........................................................................ 错误!未定义书签。 4.4走迷宫(DFS) .................................................................................. 错误!未定义书签。 4.5走迷宫(BFS) .................................................................................. 错误!未定义书签。 5 软件测试 .............................................................................................. 错误!未定义书签。结论 . (20) 致谢 (20) 参考文献 .................................................................................................. 错误!未定义书签。

迷宫求解数据结构课程设计报告

数据结构课程设计报告 课题名称:迷宫求解 姓名:马兆瑞 学号: 200903021071 专业:电子信息科学与技术 班级:信息09-2班 指导教师:侯瑞莲

目录 第一部分引言 (3) 第二部分课程设计报告 (3) 第一章课程设计目的 (3) 第二章课程设计内容和要求 (4) 2.1 问题描述 (4) 2.2 设计要求 (4) 第三章课程设计总体方案及分析 (4) 3.1 问题分析 (4) 3.2 概要设计 (7) 3.3 详细设计 (7) 3.4 调试分析 (10) 3.5 测试结果 (10) 3.6 参考文献 (12) 第三部分课程设计总结 (13) 附录(源代码) (14)

第一部分引言 数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在校和离校后的学习和工作,也有着重要的意义。 数据结构是电子信息科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用。学习数据结构的最终目的是为了获得求解问题的能力。对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。 基于此原因,暑期我们开设了数据结构课程设计。针对数据结构课程的特点,着眼于培养我们的实践能力。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通过数据结构课程实践,无论是理论知识,还是实践动手能力,同学们都会有不同程度上的提高。 第二部分课程设计报告 第一章课程设计目的 仅仅认识到队列是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解队列的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方法

幼儿园大班科学活动:趣味迷宫教学设计

新修订幼儿园阶段原创精品配套教材 大班科学活动:趣味迷宫教材定制 / 提高课堂效率 /内容可修改 Big class science activities: fun labyrinth 教师:风老师 风顺第二幼儿园 编订:FoonShion教育

大班科学活动:趣味迷宫 活动设计背景 走迷宫能有效地提高幼儿的有意注意和空间智能,帮助幼儿学会整体观察、全方位思考,培养幼儿逆向思维能力及沉着冷静、敢于挑战的品质等。 我班幼儿对走迷宫有一定经验,但能力参差不齐。有的幼儿能迅速判断并选择通畅的路径走出迷宫;有的幼儿很容易迷失方向,多次"碰壁"后才能走出迷宫;有的幼儿急于求成,缺乏一定的耐心,等等。基于此,我们设计了这个活动,将科学学习融入走迷宫游戏中感知迷宫,了解迷宫所含的基本秘密,培养幼儿的观察能力和思维能力,让幼儿在轻松愉快又富有挑战的情境中,提升经验,形成策略,巩固走迷宫的方法。 活动目标: 1.感知迷宫,了解迷宫所含的基本秘密。 2.培养幼儿的观察能力和思维能力。 3.体验迷宫游戏的乐趣。 活动准备:

1.自制迷宫图3副。 2.幼儿操作材料若干。 活动过程: 一、谈话引题: 1.小朋友,你们玩过"走迷宫"的游戏吗? 2.迷宫图上会有哪些标志呢? 二、分析迷宫图: (一)出示迷宫图一,初步感知迷宫。 1.从这张迷宫图上你看到了什么?√代表什么?×代表什么? 2.谁愿意上来走一走? (二)出示迷宫图二,剖析迷宫图的秘密。 1.从这张迷宫图上你看到了?知道了什么? 2.这两张迷宫图藏着一个共同的秘密,都有什么? 3.谁愿意大胆尝试帮小猪来搭桥? (三)出示自制迷宫半成品图,学习摆迷宫阵。 1.走迷宫看来难不到你们,那你们玩过摆迷宫阵的游戏吗? 2.今天我们来一起布迷宫阵,怎么摆放才能使迷宫阵觉得有难度、更好玩? 3.师生共同摆迷宫阵:第一步:放石头第二步:鳄鱼第三步……三、幼儿操作1.幼儿第一次布迷宫阵,教师巡回

C语言课程设计--迷宫

C语言课程设计报告题目:迷宫问题 姓名: 班级: 学号: 组员: 指导教师: 学院: 专业:

课程设计(报告)任务及评语

目录 第1章课程设计的目的与要求 (1) 1.1 课程设计目的 (1) 1.2 课程设计的实验环境 (1) 1.3 课程设计的预备知识 (1) 1.4 课程设计要求 (1) 第2章课程设计内容 (2) 2.1程序功能介绍 (2) 2.2程序整体设计说明 (2) 2.2.1设计思路 (2) 2.2.2数据结构设计及用法说明 (3) 2.2.3程序结构(流程图) (4) 2.2.4各模块的功能及程序说明 (6) 2.2.5程序结果 (7) 2.3程序源代码及注释 (7) 第3章课程设计总结 (17) 参考资料 (18)

第1章课程设计的目的与要求 1.1 课程设计目的 本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言解决实际问题的能力 1.2 课程设计的实验环境 硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开发环境。 1.3 课程设计的预备知识 熟悉C语言及C语言开发工具。 1.4 课程设计要求 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告

迷宫问题的求解数据结构课程设计(北华大学吕磊)

数据结构课程设计 设计说明书 迷宫问题求解 学生姓名 学号 班级 成绩 指导教师 数学与计算机科学学院 2012年3月2日 数据结构课程设计评阅书

注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。

课程设计任务书 2011—2012学年第二学期 专业:学号:姓名: 课程设计名称:数据结构课程设计 设计题目:迷宫问题求解 完成期限:自2012 年 2 月20 日至2012 年 3 月 2 日共 2 周设计依据、要求及主要内容(可另加附页): 设计要求: 设计内容:输入一个任意大小的迷宫数据,设置入口、出口及障碍,借助栈结构求解走出迷宫的路径并输出。 逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图; 详细设计:定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。详细设计的结果是对数据结构和基本操作做出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架; 程序编码:把详细设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚; 程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果; 结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。算法的时间、空间复杂性分析; 编写课程设计报告; 以上要求中前三个阶段的任务完成后,先将设计说明数的草稿交指导老师面审,审查合格后方可进入后续阶段的工作。设计工作结束后,经指导老师验收合格后将设计说明书打印装订,并进行答辩。 指导教师(签字):教研室主任(签字): 批准日期:年月日 摘要 由计算机解迷宫时,通常用的是穷举求解的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路反回,换一个方向继续探索,直至所有可行的通路都探索到为止。为了保证

相关文档
相关文档 最新文档