C语言迷宫(经典题目).docx_第1页
C语言迷宫(经典题目).docx_第2页
C语言迷宫(经典题目).docx_第3页
C语言迷宫(经典题目).docx_第4页
C语言迷宫(经典题目).docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在上面的迷宫中只有一个入口,有地方是有食物的,现在一只老鼠从入口处进来,要求能找到所有的食物并且打印找到食物的路径。(1)图信息:#define N 8struct ginfoint up,down,left,right;int food,visit; aNN=; (2)记录路径pathN*N;(3)找到食物axy.food=1(4)代码#include stdio.h #include#define N 8int path64,k=0;struct ginfoint up,down,left,right;int food,visit; aNN=0,0,0,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,0,0,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,0,0,0, 0,1,0,0,0,0, 1,1,0,1,0,0, 0,1,1,0,0,0, 1,1,0,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,1,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0,1,1,0,0,0,0, 1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,1,0,0, 1,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,0,1,0, 1,1,0,0,0,0,1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,1,1,0,0,0,1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0,0,1,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,1,0,0, 0,1,1,1,0,0, 1,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,1,0,0,1,1,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0;void print()int i,x=0,y=0;printf(0,0-);for(i=1;i=k;i+)switch(pathi)case 1 :x-;break; case 2 :x+;break; case 3 :y-;break; case 4 :y+;break; if(i,x,y);else printf(%d,%d found!n,x,y);void try1(int x,int y)axy.visit=1;if(axy.food) axy.food=0;print();k+;if(axy.up) pathk=1;/方向为1x-;axy.down=0;if(!axy.visit)try1(x,y);axy.down=1;x+;if(axy.down) pathk=2;/方向为2x+;axy.up=0;if(!axy.visit)try1(x,y);axy.up=1;x-;if(axy.left) pathk=3;/方向为3y-;axy.right=0;if(!axy.visit)try1(x,y);axy.right=1;y+;if(axy.right) pathk=4;/方向为4y+;axy.left=0;if(!axy.visit)try1(x,y);axy.left=1;y-;axy.visit=0;k-;void main() try1(0,0); 深层次问题:找发现食物的更短路。#include stdio.h #include#define N 8int path64,k=0;int fNN=0;struct ginfoint up,down,left,right;int food,visit; aNN=0,0,0,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,0,0,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,0,0,0, 0,1,0,0,0,0, 1,1,0,1,0,0, 0,1,1,0,0,0, 1,1,0,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,1,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0,1,1,0,0,0,0, 1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,1,0,0, 1,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,0,1,0, 1,1,0,0,0,0,1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,1,1,0,0,0,1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0,0,1,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,1,0,0, 0,1,1,1,0,0, 1,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,1,0,0,1,1,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0;void print()int i,x=0,y=0;printf(n0,0 - );for(i=1;i=k;i+)switch(pathi)case 1 :x-;break; case 2 :x+;break; case 3 :y-;break; case 4 :y+;break; if(i ,x,y);else printf(%d,%d food!n,x,y);void try1(int x,int y)axy.visit=1;if(axy.food & !fxy) fxy=k;print();/axy.food=0;if(axy.food & fxyk)fxy=k;printf(nFound a shortest one ); print();k+;if(axy.up) pathk=1;/方向为1x-;axy.down=0;if(!axy.visit)try1(x,y);axy.down=1;x+;if(axy.down) pathk=2;/方向为2x+;axy.up=0;if(!axy.visit)try1(x,y);axy.up=1;x-;if(axy.left) pathk=3;/方向为3y-;axy.right=0;if(!axy.visit)try1(x,y);axy.right=1;y+;if(axy.right) pathk=4;/方向为4y+;axy.left=0;if(!axy.visit)try1(x,y);axy.left=1;y-;axy.visit=0;k-;void main() try1(0,0); 最深层次问题:找发现食物的最短路。#include stdio.h #include stdlib.h #include#define N 8int path64,k=0;struct ginfoint up,down,left,right;int food,visit; aNN=0,0,0,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,0,0,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,0,0,0, 0,1,0,0,0,0, 1,1,0,1,0,0, 0,1,1,0,0,0, 1,1,0,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0, 0,1,0,0,1,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0, 1,1,0,0,0,0,1,1,0,0,0,0, 1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,1,0,0, 1,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,0,1,0, 1,1,0,0,0,0,1,1,0,1,0,0, 1,1,1,0,0,0, 1,1,0,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,1,1,0,0,0,1,0,0,0,0,0, 1,0,0,0,0,0, 1,1,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0,0,1,0,1,0,0, 0,0,1,1,0,0, 1,0,1,1,0,0, 0,1,1,1,0,0, 0,1,1,1,0,0, 1,0,1,1,0,0, 0,0,1,1,0,0, 0,1,1,0,0,0,1,0,0,1,1,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0, 1,0,0,1,0,0, 0,0,1,1,0,0, 0,0,1,1,0,0, 1,0,1,0,0,0;typedef struct pathNodeint x,y,k;int *r;struct pathNode * next;foodRoad;foodRoad * head;foodRoad * searchPath(int x,int y)foodRoad * p=head;while(p)if(p-x = x & p-y = y) return p;p=p-next; return 0;void createHead()head=(foodRoad *)malloc(sizeof(foodRoad);head-next=0;void createPathNode(int x,int y,int k)int i,*pr;foodRoad *p;p=searchPath(x,y);if(p=0)foodRoad *pf;pf=(foodRoad *)malloc(sizeof(foodRoad);pf-x=x;pf-y=y;pf-k=k;pr=(int *)malloc(sizeof(int)*(k+1);pf-r=pr;for(i=1;inext=0;p=head;while(p-next)p=p-next;p-next=pf;else if(p-k k)free(p-r);pr=(int *)malloc(sizeof(int)*(k+1);p-r=pr;p-k=k;for(i=1;inext;int i,x,y,k;while(p)x=0,y=0,k=p-k;printf(n0,0 - );for(i=1;iri)case 1 :x-;break; case 2 :x+;break; case 3 :y-;break; case 4 :y+;break; if(i ,x,y);else printf(%d,%d food!n,x,y);p=p-next;void try1(int x,int y)axy.visit=1;if(axy.food) createPathNode(x,y,k);k+;if(axy.up) pathk=1;/方向为1x-;axy.down=0;if(!axy.visit)try1(x,y);axy.down=1;x+;if(axy.down) pa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论