~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;
}