~cpp
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
void main(){
srand(time(0));
// 8 게
int imove[] = {-1,0,1,1,1,0,-1,-1};
int jmove[] = {1,1,1,0,-1,-1,-1,0};
// 기
int Xroom;
int Yroom;
// 값
int ibug;
int jbug;
int count = 0; // 계게 integer 값
bool existZero = false; // bool 값
int i,j;
//
do{
cout << "각 기 (2 < X <= 40) :";
cin >> Xroom;
cout << "각 기 (2 <= Y < 20) :";
cin >> Yroom;
if (Xroom > 2 && Xroom < 41 && Yroom > 1 && Yroom < 21)
break;
cout << ", 기 . ." << endl;
}while(true);
// 2
int **room;
room = new int*[Xroom];
for (i=0; i<Xroom; i++)
room[i] = new int[Yroom];
// 기
for (i=0;i<Xroom;i++)
for(j=0;j<Yroom;j++)
room[i][j] =0;
// do ~ while
do{
cout << " 기값 X :";
cin >> ibug;
cout << " 기값 Y :";
cin >> jbug;
if (ibug >= 0 && ibug < Xroom && jbug >= 0 && jbug < Yroom)
break;
cout << " . ." << endl;
}while(true);
room[ibug][jbug] = 1; // 기값 기
// 고 while
while(count<50000 && existZero == false){
existZero = true;
for(i=0;i<Xroom;i++){
for(j=0;j<Yroom;j++){
if(room[i][j] == 0)
existZero = false;
}
}
int random = rand()%8; // 0~7 까 random integer 값
//
if (ibug + imove[random] <0 || ibug + imove[random] > Xroom-1 ||
jbug + jmove[random] <0 || jbug + jmove[random] > Yroom-1)
continue;
// 고
else{
room[ibug+imove[random]][jbug+jmove[random]]++;
ibug = ibug + imove[random];
jbug = jbug + jmove[random];
count++;
}
}
//
cout << "각 : \n\n";
for(i=0;i<Xroom;i++){
for(j=0;j<Yroom;j++)
cout << setw(3) << room[i][j];
cout << endl;
}
//
cout << "\n :" << count << endl;
//
for (i=0; i<Xroom;i++)
delete[] room[i];
delete [] room;
}