算法设计中变量跟踪实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计中变量跟踪实验

算法设计中变量跟踪实验   在算法设计学习中,对于一些经典的算法首先需要的是学习、理解,然后才是应用。原因是,一方面,这些经典的算法比较复杂,不学习基础理论是很难自行设计出代码的,尤其是很多算法都获得过大奖,确非常人所能原创;另一方面,学习经典算法本身就是对计算思维的一种高端认知,是对程序设计语言的一种综合应用体验。由于较为高级的经典算法如递归、搜索等多在高中信息技术课程的选修课程中出现,而目前的信息学奥赛是对开设这类选修课的一种补充,对选修课的课程内涵与教育效应具有较强的放大作用,因此,笔者借鉴基于奥赛水平的经典算法认知过程,探索如何利用变量跟踪算法设计实验认知算法的内涵本质及真实过程。   实验方法与目的   基础实验:以利用变量跟踪认知“广度优先搜索”为例,进行实验指导,并根据数据访问顺序、结果,对应迷宫数阵进行跟踪,最后参照实验数据进行访问过程的推演,以理解广度优先搜索算法的内涵本质。   拓展实验:对上述做法做进一步深化、拓展变量跟踪实验,对深度优先算法进行结点数据的跟踪,依据实验数据进行算法内涵本质的推演。通过对比,对广度优先搜索与深度优先搜索的算法思想、程序代码产生更明确的区分、理解。   实验引言   根据定义,我们可知,广度优先搜索的方法是:从根结点开始,逐步把所有的子结点全部访问之后,再继续访问下一层结点的所有子结点,就像清扫一个个战场,把阵线逐步往前推进。   笔者以C++语言程序的“走迷宫”为例,进行变量跟踪实验。   实验准备   (1)定义方向数组fx[]和走过判断数组string zouguo[]。   string fx[]={上,右,下,左}; //显示方向   string zouguo[]={没走过,走过}; //显示走过与否   (2)准备迷宫数阵等实验原始数据。用纯文本文件migong.in存储如下数阵,第1行表示4行4列矩阵,第2行表示起点坐标,第3行表示终点坐标,以下是迷宫数阵。   4 4   1 1   4 4   0 0 0 1   1 0 1 0   0 0 0 1   1 0 0 0   (3)准备经典算法的源程序(参见下文,不包含跟踪点代码)。   实验过程   根据算法含义,寻找跟踪点,实验中要预先删除以下跟踪点代码指导学生重新编写插入。   //走迷宫:广度搜索   #include   #include   #include   using namespace std;   struct note { //自定义结构体,为访问结点存储坐标、步数   int x; int y; int s; };   int main() { //主程序   freopen(migong.in,r,stdin); //设置读取文件,获得实验源数据   freopen(migong.out,w,stdout); //设置输出文件,存储实验结果   struct note fwd[5000]; //定义存储访问点的数组   int a[100][100]={0},book[100][100]={0}; //定义存储数阵与访问标记数组   //@跟踪实验设计,以下@说明的代码需要在实验中自行设计、插入、分析   string fx[]={上,右,下,左}; //显示方向   string zouguo[]={没走过,走过}; //显示走过与否   //定义一个用于表示走的方向的数组   int next[4][2]={ {-1,0},{0,1}, {1,0},{0,-1} };   int k,n,m,tx,ty,flag; //定义使用变量   int startx,starty,endx,endy; //定义开始点、结束点变量   cinnm; //读入矩阵行列数   cinstartxstarty; //读入起点坐标   cinendxendy; //读入终点坐标   for (int i=1;i=n;i++) //读入迷宫数阵   for(int j=1;j=m;j++)   cina[i][j];   //对存储访问结点的队列初始化   int head,tail; //定义对列首尾   head=1; //队列首   tail=1; //队列尾   //往队列存储走迷宫的起点坐标   fwd[tail].x=startx;   fwd[tail].y=starty;   fwd[tail].s=0; //步数开始??0   tail++; //尾后移   book[startx][starty]=1; //起点已访问,作标记   flag=0;//用来标记是

您可能关注的文档

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档