• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 3136
    下载次数
  • 2005-11-22 10:09
    上传日期
一次软件作业,迷宫的求解问题,有需要的可以直接下载,(c语言版)
迷宫求解问题.zip
  • 迷宫求解问题.TXT
    5KB
  • www.pudn.com.txt
    218B
内容介绍
#include<malloc.h> #include<stdio.h> #include<conio.h> #define M 6 /*规定迷宫的行数*/ #define N 4 /*规定迷宫的列数*/ int i=0; typedef struct shuju{ int data; int flag; /*判断这个位置是否被走过,使其产生记忆效果*/ }SHU; typedef struct maze{ int c; int flag; int direct; int x; int y; struct maze *next; }MG; MG *top,*p; MG * pop(int bb,int xx,int yy,SHU t[M][N]) /*入栈操作*/ {int i2,j2; i++; p=(MG *)malloc(sizeof(MG)); p->c=bb; p->flag=1; p->direct=4; p->x=xx; p->y=yy; if(i==1) {top=p; top->next=NULL; } else {p->next=top; top=p; } clrscr(); for(i2=0;i2<M;i2++) {printf("\n"); for(j2=0;j2<N;j2++) if(t[i2][j2].data==8) {textcolor(YELLOW); cprintf("%3d",t[i2][j2].data); } else {textcolor(WHITE); cprintf("%3d",t[i2][j2].data); } } for(i2=0;i2<80;i2++) /*时间延迟*/ delay(1000); } int way(int x1,int y1,SHU s[M][N]) /*寻找路径函数*/ { int x,y,f=0; int i1,j1; while(top!=NULL) /*以下是在四个方向上进行判断 通就入栈,不通就进行下个方向的 判断,如果四个方向都不通,就出栈*/ if(top->flag==1) {x=top->x; y=top->y; if(x==x1&&y==y1) { f=1; break; } /*判断右方向*/ if(top->direct==4) {top->direct--; if(0<=y+1&&y+1<N) /*判断数组的下标是否超过了规定的界限*/ if(s[x][y+1].data==0&&s[x][y+1].flag==0) pop(s[x][y+1].data=8,x,y+1,s); } else if(top->direct==3) /*判断下方向*/ {top->direct--; if(0<=x+1&&x+1<M) if(s[x+1][y].data==0&&s[x+1][y].flag==0) pop(s[x+1][y].data=8,x+1,y,s); } else if(top->direct==2) /*判断左方向*/ {top->direct--; if(0<=y-1&&y-1<N) if(s[x][y-1].data==0&&s[x][y-1].flag==0) pop(s[x][y-1].data=8,x,y-1,s); } else if(top->direct==1) /*判断上方向*/ {top->direct--; top->flag=0; if(0<=x-1&&x-1<M) if(s[x-1][y].data==0&&s[x-1][y].flag==0) pop(s[x-1][y].data=8,x-1,y,s); } } else {s[top->x][top->y].data=0; s[top->x][top->y].flag=1; top=top->next; clrscr(); for(i1=0;i1<M;i1++) {printf("\n"); for(j1=0;j1<N;j1++) if(s[i1][j1].data==8) {textcolor(YELLOW); cprintf("%3d",s[i1][j1].data); } else {textcolor(WHITE); cprintf("%3d",s[i1][j1].data); } } for(i1=0;i1<80;i1++) /*产生时间延迟,不同的CPU产生的延迟效果不一样*/ delay(1000); } return f; } main() {SHU s[M][N]; int x,y,x1,y1; int i1,j1,i,j,F; for(i1=0;i1<M;i1++) for(j1=0;j1<N;j1++) /*迷宫图面,用一个数字表示*/ s[i1][j1].data=8; for(i1=0;i1<M;i1++) {printf("\n"); for(j1=0;j1<N;j1++) printf("%3d",s[i1][j1].data); /*打印迷宫最原始的界面,用数字8表示每个 } 位置*/ } printf("\nplese drink a migong --0 is yes --1 is no\n"); for(i1=0;i1<M;i1++) for(j1=0;j1<N;j1++) {printf("\nb[%d][%d]=",i1,j1); scanf("%d",&s[i1][j1].data); /*绘制迷宫,0代表通,1代表不通*/ s[i1][j1].flag=0; clrscr(); for(i=0;i<M;i++) {printf("\n"); for(j=0;j<N;j++) if(s[i][j].data==0) {textcolor(YELLOW); cprintf("%3d",s[i][j].data); } else if(s[i][j].data==1) {textcolor(RED); cprintf("%3d",s[i][j].data); } else {textcolor(WHITE); cprintf("%3d",s[i][j].data); } } } textcolor(WHITE); printf("\nmi gong tu is :"); for(i1=0;i1<M;i1++) {printf("\n"); for(j1=0;j1<N;j1++) printf("%3d",s[i1][j1].data); } printf("\nplease input the ru kou zuo biao(x&y)\n for example input:0 0\ninput:"); /*输入迷宫的入口坐标(X,Y)*/ scanf("%d %d",&x,&y); printf("please input the chu kou zuo biao(x1&y1)\n for example input:3 3\ninput:"); /*输入迷宫的出口坐标(X1,Y1)*/ scanf("%d %d",&x1,&y1); printf("press any key to continue:"); getch(); while(s[x][y].data!=0) /*判断是否有入口位置*/ {printf("Not find ru kou\n"); printf("please input again: "); scanf("%d %d",x,y); } pop(s[x][y].data=8,x,y,s); F=way(x1,y1,s); /*路径进行判断函数*/ textcolor(WHITE); if(F==0) cprintf("\r\nben mi gong mei you jie!\n"); else cprintf("\r\nben mi gong you way:\n"); cprintf("\r\npress any key to quit.\n"); getch(); }
评论
    相关推荐
    • CPP.rar
      c++ 語言學習的書籍,內容精闢初學者可看!
    • C_language_examples.zip
      c语言编程精髓实例 重基础到高级,内含大量实例让你你从模糊的概念到真正C语言高手
    • C-codes.rar
      包含了各种C语言实例 方便大家参考与学习
    • C-language-classical.rar
      C语言实例解析精粹,一本很不错练习C编程的书籍
    • c++builder08.rar
      数据结构的c++实现,源代码全部在C++builder中运行.第8部分
    • Examples-of-C-language.rar
      C语言实例解析精粹高清电子档无水印原版pdf
    • the-explain-of-C-language-examples.rar
      c语言实例讲解精粹,包含pdf格式的实例讲解和相应源代码分享。便于大家深入学习编程
    • C语言实例解析精粹(200例)
      本书共分 8 篇,分别为基础篇、数据结构篇、数值计算与趣味数学篇、图形篇、系统篇、常见试题解答篇、游戏篇和综合实例篇,汇集了近200 个实例,基本涵盖了目前C 语言编程的各个方面。
    • 开发文档范例.rar
      完整的开发文档范例,对于软件开发人员写文档有很高的参考价值
    • 0123..rar
      VB车辆管理系统论文,毕业设计时候可以供参考