#include <iostream>
#include <math.h>
#include <stdlib.h>
int random(int n) {return rand() % n; }
void randomize() { srand(time(NULL)); }
using namespace std;
int main(void)
{
int mz[30][30];
int i,j;
//initial
for(i=0;i<30;i++)
for(j=0;j<30;j++)
mz[i][j]=0;
//make border
for(i=0;i<30;i++)
{
mz[0][i] = 1;
mz[29][i] = 1;
mz[i][0] = 1;
mz[i][29]=1;
}
int xx,yy; //random position
int x_tmp,y_tmp; //backup position
int dir; //directory way
int count;
randomize();
for(i=0;i<100;i++)
{
//取偶數點
xx = (random(14)+1)*2;
yy = (random(14)+1)*2;
x_tmp = xx;
y_tmp = yy;
if(mz[xx][yy] == 0){
do{
count = 0;
xx = x_tmp;
yy = y_tmp;
dir = random(4);
cout << "dir:" << dir << endl;
do{
count = count + 1;
switch (dir)
{
case 0: xx = xx-1;
break;
case 1: xx = xx+1;
break;
case 2: yy = yy+1;
break;
case 3: yy = yy-1;
break;
}
}while(mz[xx][yy]!=1); // 確認是否已經碰到牆壁
cout << "count:" << count << endl;
}while(count > 10); //長度不能超過陣列-邊緣的長度否則會產生死路
xx = x_tmp;
yy = y_tmp;
do{
mz[xx][yy] = 1;
switch (dir)
{
case 0: xx = xx-1;
break;
case 1: xx = xx+1;
break;
case 2: yy = yy+1;
break;
case 3: yy = yy-1;
break;
}
}while(mz[xx][yy] != 1);
}//if end
}
//列印迷宮
for(i=0;i<30;i++){
for(j=0;j<30;j++){
if(mz[i][j]==1)
cout << "■";
else
cout << "□";
}
cout << endl;
}
cin.get();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgppbnQgcmFuZG9tKGludCBuKSB7cmV0dXJuIHJhbmQoKSAlIG47IH0Kdm9pZCByYW5kb21pemUoKSB7IHNyYW5kKHRpbWUoTlVMTCkpOyB9Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4odm9pZCkKewogICBpbnQgbXpbMzBdWzMwXTsKICAgaW50IGksajsKICAgLy9pbml0aWFsCiAgIGZvcihpPTA7aTwzMDtpKyspCiAgICAgIGZvcihqPTA7ajwzMDtqKyspCiAgICAgICAgICAgICBteltpXVtqXT0wOwogICAvL21ha2UgYm9yZGVyCiAgIGZvcihpPTA7aTwzMDtpKyspCiAgIHsKICAgICAgIG16WzBdW2ldID0gMTsKICAgICAgIG16WzI5XVtpXSA9IDE7CiAgICAgICBteltpXVswXSA9IDE7CiAgICAgICBteltpXVsyOV09MTsKICAgfQogICBpbnQgeHgseXk7ICAgICAgIC8vcmFuZG9tIHBvc2l0aW9uCiAgIGludCB4X3RtcCx5X3RtcDsgLy9iYWNrdXAgcG9zaXRpb24KICAgaW50IGRpcjsgICAgICAgICAvL2RpcmVjdG9yeSB3YXkKICAgaW50IGNvdW50OwogICByYW5kb21pemUoKTsKICAgZm9yKGk9MDtpPDEwMDtpKyspCiAgIHsKICAgICAgIC8v5Y+W5YG25pW46bueCiAgICAgICB4eCA9IChyYW5kb20oMTQpKzEpKjI7CiAgICAgICB5eSA9IChyYW5kb20oMTQpKzEpKjI7CiAgICAgICB4X3RtcCA9IHh4OwogICAgICAgeV90bXAgPSB5eTsKICAgICAgIGlmKG16W3h4XVt5eV0gPT0gMCl7CiAgICAgICBkb3sKICAgICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICAgICB4eCA9IHhfdG1wOwogICAgICAgICAgICAgICB5eSA9IHlfdG1wOwogICAgICAgICAgICAgICBkaXIgPSByYW5kb20oNCk7CiAgICAgICAgICAgICAgIGNvdXQgPDwgImRpcjoiIDw8IGRpciA8PCBlbmRsOwogICAgICAgICAgICBkb3sKICAgICAgICAgICAgICAgY291bnQgPSBjb3VudCArIDE7CiAgICAgICAgICAgICAgIHN3aXRjaCAoZGlyKQogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGNhc2UgMDogeHggPSB4eC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjYXNlIDE6IHh4ID0geHgrMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAyOiB5eSA9IHl5KzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgMzogeXkgPSB5eS0xOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH13aGlsZShtelt4eF1beXldIT0xKTsgLy8g56K66KqN5piv5ZCm5bey57aT56Kw5Yiw54mG5aOBCiAgICAgICAgICAgIGNvdXQgPDwgImNvdW50OiIgPDwgY291bnQgPDwgZW5kbDsKICAgICAgIH13aGlsZShjb3VudCA+IDEwKTsgLy/plbfluqbkuI3og73otoXpgY7pmaPliJct6YKK57ej55qE6ZW35bqm5ZCm5YmH5pyD55Si55Sf5q276LevCiAgICAgICB4eCA9IHhfdG1wOwogICAgICAgeXkgPSB5X3RtcDsKICAgICAgIGRvewogICAgICAgICAgICAgICBtelt4eF1beXldID0gMTsKICAgICAgICAgICAgICAgc3dpdGNoIChkaXIpCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY2FzZSAwOiB4eCA9IHh4LTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgMTogeHggPSB4eCsxOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICBjYXNlIDI6IHl5ID0geXkrMTsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAzOiB5eSA9IHl5LTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIH0KICAgICAgIH13aGlsZShtelt4eF1beXldICE9IDEpOwogICAgICAgfS8vaWYgZW5kICAgICAgCiAgICAgICB9CiAgICAgICAvL+WIl+WNsOi/t+WurgogICAgICAgZm9yKGk9MDtpPDMwO2krKyl7CiAgICAgICAgICBmb3Ioaj0wO2o8MzA7aisrKXsKICAgICAgICAgICAgICBpZihteltpXVtqXT09MSkKICAgICAgICAgICAgICAgICBjb3V0IDw8ICLilqAiOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb3V0IDw8ICLilqEiOwogICAgICAgICAgfQogICAgICAgICAgY291dCA8PCBlbmRsOyAgICAgICAgCiAgIH0KICAgY2luLmdldCgpOwp9Cg==