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