= [RandomWalk]/[조동영] = === 2학년 1학기 자료구조 레포트용 === {{{~cpp #include #include #include 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> 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-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