fork(1) download
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. int random(int n) {return rand() % n; }
  6. void randomize() { srand(time(NULL)); }
  7.  
  8. using namespace std;
  9.  
  10. int main(void)
  11. {
  12. int mz[30][30];
  13. int i,j;
  14. //initial
  15. for(i=0;i<30;i++)
  16. for(j=0;j<30;j++)
  17. mz[i][j]=0;
  18. //make border
  19. for(i=0;i<30;i++)
  20. {
  21. mz[0][i] = 1;
  22. mz[29][i] = 1;
  23. mz[i][0] = 1;
  24. mz[i][29]=1;
  25. }
  26. int xx,yy; //random position
  27. int x_tmp,y_tmp; //backup position
  28. int dir; //directory way
  29. int count;
  30. randomize();
  31. for(i=0;i<100;i++)
  32. {
  33. //取偶數點
  34. xx = (random(14)+1)*2;
  35. yy = (random(14)+1)*2;
  36. x_tmp = xx;
  37. y_tmp = yy;
  38. if(mz[xx][yy] == 0){
  39. do{
  40. count = 0;
  41. xx = x_tmp;
  42. yy = y_tmp;
  43. dir = random(4);
  44. cout << "dir:" << dir << endl;
  45. do{
  46. count = count + 1;
  47. switch (dir)
  48. {
  49. case 0: xx = xx-1;
  50. break;
  51. case 1: xx = xx+1;
  52. break;
  53. case 2: yy = yy+1;
  54. break;
  55. case 3: yy = yy-1;
  56. break;
  57. }
  58. }while(mz[xx][yy]!=1); // 確認是否已經碰到牆壁
  59. cout << "count:" << count << endl;
  60. }while(count > 10); //長度不能超過陣列-邊緣的長度否則會產生死路
  61. xx = x_tmp;
  62. yy = y_tmp;
  63. do{
  64. mz[xx][yy] = 1;
  65. switch (dir)
  66. {
  67. case 0: xx = xx-1;
  68. break;
  69. case 1: xx = xx+1;
  70. break;
  71. case 2: yy = yy+1;
  72. break;
  73. case 3: yy = yy-1;
  74. break;
  75. }
  76. }while(mz[xx][yy] != 1);
  77. }//if end
  78. }
  79. //列印迷宮
  80. for(i=0;i<30;i++){
  81. for(j=0;j<30;j++){
  82. if(mz[i][j]==1)
  83. cout << "■";
  84. else
  85. cout << "□";
  86. }
  87. cout << endl;
  88. }
  89. cin.get();
  90. }
  91.  
Success #stdin #stdout 0s 4152KB
stdin
Standard input is empty
stdout
dir:2
count:9
dir:2
count:15
dir:0
count:10
dir:0
count:10
dir:3
count:28
dir:3
count:28
dir:1
count:13
dir:1
count:13
dir:0
count:4
dir:3
count:4
dir:1
count:17
dir:0
count:12
dir:2
count:8
dir:0
count:20
dir:0
count:20
dir:0
count:20
dir:3
count:8
dir:1
count:8
dir:2
count:2
dir:1
count:8
dir:0
count:6
dir:1
count:7
dir:0
count:12
dir:0
count:12
dir:0
count:12
dir:1
count:5
dir:3
count:2
dir:3
count:4
dir:0
count:2
dir:2
count:8
dir:2
count:4
dir:2
count:4
dir:2
count:4
dir:3
count:8
dir:2
count:11
dir:2
count:11
dir:0
count:10
dir:2
count:4
dir:1
count:10
dir:3
count:4
dir:3
count:2
dir:3
count:4
dir:2
count:3
dir:0
count:2
dir:1
count:2
dir:3
count:2
dir:2
count:4
dir:1
count:12
dir:0
count:2
dir:1
count:2
dir:2
count:4
dir:2
count:4
dir:2
count:2
dir:1
count:2
dir:1
count:2
dir:3
count:8
dir:2
count:6
dir:3
count:4
dir:3
count:2
dir:1
count:2
dir:1
count:6
dir:2
count:2
dir:3
count:10
dir:2
count:4
dir:0
count:2
dir:2
count:2
dir:2
count:2
dir:0
count:2
dir:1
count:2
dir:3
count:6
dir:3
count:4
dir:2
count:5
dir:3
count:4
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■□□□□□■□□□□□□□■□□□□□□□□□□□□□□■
■□■■■■■□□□■■■■■□□□□□□□■□□□□□□■
■□□□□□■□□□□□□□■□□□□□□□■□□□□□□■
■□□□□□■□□□□□□□■■■■■□■□■□□□■□□■
■□□□□□■□□□□□□□■□□□□□■□■□□□■□□■
■□□□□□■□□□■■■■■□■■■■■□■□■■■■■■
■□□□□□■□□□□□■□■□□□□□■□■□□□□□■■
■□□□□□■■■■■□■□■■■■■□■■■■■□■■■■
■□□□□□■□■□□□□□■□□□□□■□■□□□□□□■
■□■□■■■□■■■□□□■■■□□□■□■□■□□□□■
■□■□□□□□□□□□□□□□□□□□■□□□■□□□□■
■■■■■□□□□□□□■■■■■■■■■■■■■■■■■■
■□□□□□□□□□□□□□□□■□■□□□□□□□□□■■
■□■□□□□□■■■■■■■■■□■□■■■■■■■■■■
■□■□□□□□■□□□□□□□■□■□□□□□□□□□■■
■□■□□□□□■□□□□□□□■□■□□□□□□□■■■■
■□■□□□□□□□□□□□□□■□■□□□□□□□□□□■
■□■■■■■■■■■□□□□□■□■■■□□□□□□□□■
■□■□□□□□□□□□□□□□□□■□□□□□□□□□□■
■□■□□□■■■■■■■■■■■□■□■□□□■■■■■■
■□■□□□■□□□□□□□□□□□■□■□□□□□□□□■
■□■□□□■□■■■■■■■■■□■□■□□□□□□□□■
■□■□□□■□□□□□■□□□□□□□■□□□□□□□□■
■□■■■■■□□□□□■□□□□□■■■■■□□□□□□■
■□□□□□■□□□□□■□□□□□□□■□■□□□□□□■
■■■■■□■□□□□□■□□□□□□□■□■■■■■■■■
■□□□□□■□□□□□■□□□□□□□■□□□□□□□□■
■■■■■■■■■□■■■□□□■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■