fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define W 8
  4. #define H 6
  5. char map[H][W]={
  6. {1,1,1,1,1,1,1,1},
  7. {1,0,1,0,0,0,0,1},
  8. {1,0,1,1,0,0,1,1},
  9. {1,0,0,0,0,1,0,1},
  10. {1,1,0,1,0,0,2,1},
  11. {1,1,1,1,1,1,1,1},
  12. };
  13.  
  14. void print_map(){
  15. int i,s;
  16. for(i=0;i<6;i++){
  17. for(s=0;s<8;s++){
  18. if(map[i][s]==1) printf("#");
  19. if(map[i][s]==0) printf(" ");
  20. if(map[i][s]==2) printf("G");
  21. }
  22. printf("\n");
  23. }
  24. }
  25. void maze0(int x,int y,int depth){
  26. int i;
  27. if(map[x][y]==0) {
  28. for(i=0;i<depth*2;i++){
  29. printf(" ");
  30. }
  31. printf("(%d,%d)\n",x,y);
  32. }
  33. if(map[x][y]==1) {
  34. for(i=0;i<depth*2;i++){
  35. printf(" ");
  36. }
  37. printf("(%d,%d)X\n",x,y);
  38. }
  39. if(map[x][y]==2) {
  40. for(i=0;i<depth*2;i++){
  41. printf(" ");
  42. }
  43. printf("(%d,%d)OK\n",x,y);
  44. }
  45. }
  46.  
  47. void maze1(int x,int y,int depth){
  48. if(map[x][y]==0){
  49. maze0(x,y,depth);
  50. maze1(x+1,y,depth+1);
  51. maze1(x,y+1,depth+1);
  52. }
  53. if(map[x][y]==1){
  54. maze0(x,y,depth);
  55. }
  56. if(map[x][y]==2){
  57. maze0(x,y,depth);
  58. exit(0);
  59. }
  60. }
  61.  
  62.  
  63. int main(void) {
  64. print_map();
  65. maze1(1,1,0);
  66.  
  67. return 0;
  68. }/*5の回答 下と右の調査を行い、さらに進めるところへは
  69. 繰り返し下と右への調査を再帰的に行うというプログラムをGにたどり着くまで
  70. ずっと実行することで迷路をといている。
  71. 6の回答 迷路に2*2以上のスペースがあるとその場を
  72. // ずっと探索し続けてしまい、プログラムが終了しなくなってしまうから。*/
  73.  
  74.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
########
# #    #
# ##  ##
#    # #
## #  G#
########
(1,1)
  (2,1)
    (3,1)
      (4,1)X
      (3,2)
        (4,2)
          (5,2)X
          (4,3)X
        (3,3)
          (4,3)X
          (3,4)
            (4,4)
              (5,4)X
              (4,5)
                (5,5)X
                (4,6)OK