(5)电子老鼠闯迷宫.cpp
上传用户:wxj1219
上传日期:2013-01-31
资源大小:6k
文件大小:1k
源码类别:

数据结构

开发平台:

C/C++

  1. #include<stdio.h>
  2. #include<conio.h>
  3. void pop(void);
  4. void push(void);
  5. void print(void);
  6. unsigned char a[8][8]=
  7. {
  8. {0,0,1,1,1,1,1,1},
  9. {1,0,1,0,0,0,0,1},
  10. {1,0,1,0,1,0,1,1},
  11. {1,0,0,0,0,0,1,1},
  12. {1,0,1,0,1,0,1,1},
  13. {1,0,1,0,1,0,1,1},
  14. {1,0,0,0,1,0,0,0},
  15. {1,0,1,0,0,0,1,0}
  16. };
  17. char addx[4]={0,1,0,-1};
  18. char addy[4]={-1,0,1,0};
  19. char x=0,y=0;
  20. char p=0;
  21. char stack[300];
  22. char u;
  23. void main()
  24. {
  25. clrscr();
  26. sta:if((y==7)&&(x==7))
  27. {
  28. print();
  29. getchar();
  30. goto end;
  31. }
  32. if((x<0)||(x>7)||(y<0)||(y>7)||(a[y][x]!=0))
  33. goto end;
  34. for(u=0;u<4;u++)
  35. {
  36. push();
  37. a[y][x]=2;
  38. x+=addx[u];
  39. y+=addy[u];
  40. goto sta;
  41. bac: ;
  42. }
  43. end:if(p>0)
  44. {
  45. pop();
  46. a[y][x]=0;
  47. goto bac;
  48. }
  49. }
  50. void push(void)
  51. {
  52. stack[p]=x;
  53. stack[p+1]=y;
  54. stack[p+2]=u;
  55. p+=3;
  56. }
  57. void pop(void)
  58. {
  59. p-=3;
  60. x=stack[p];
  61. y=stack[p+1];
  62. u=stack[p+2];
  63. }
  64. void print(void)
  65. {
  66. int u1,u2;
  67. for(u2=0;u2<8;u2++)
  68. {
  69. for(u1=0;u1<8;u1++)
  70. {
  71. gotoxy(u1+1,u2+1);
  72. if((a[u2][u1]==0)||(a[u2][u1]==2)) printf("%c",' ');
  73. if(a[u2][u1]==1) printf("%c",'