uiucpass   5년 전

isRotate는 BBB 에서 중간 B를 중심으로 회전할 수 있는지 체크하는 함수이고

mat이라는 2차원배열은 1과 0만이 있습니다.(B나 E도 0)

visited는 [row 위치][column 위치] [ 방향] 으로 이루어져있습니다.

지도를 입력 받고, 입력받은 BBB의 중간 B의 위치를 큐에 넣고, 처음위치부터 rotate가능한 지 확인한 뒤에

BFS를 실행합니다. 여기서 큐는 row, col, 얼마나 이동했는지(cnt), 수직으로 가는지 평행으로가는지 (chk) 를

각각 요소로 가지고 있는 struct를 원소로 가집니다. BFS가 시작되면 큐의 front()에서 왼쪽 오른쪽 위 아래를 검사하고

방문한 것이 아니면 cnt + 1을 하고, 여기서 rotate 까지 가능하면 cnt + 2를 하여 줍니다.

마지막으로 E와 같은 방향( 수직 or 평행)이면서 E의 중간 지점과 탐색하는 위치가 일치하면 즉시 종료하고, 탐색 중인

cnt를 출력합니다.

jh05013   5년 전

디버깅용 printf를 다 지웠을 경우의 반례입니다.

uiucpass   5년 전

jh05013  


님 정말 감사합니다 ㅜㅜㅜ 사랑합니다!!!!!!!!!!!!!!!!!!!!!!!!

혹시 반례같은 건 어떻게 찾으시는 지 여쭈어도 될까요?

jh05013   5년 전

방금은 랜덤 데이터를 만들어서 제 코드와 비교했고, 그냥 아무렇게나 넣다 보면 나오는 경우도 많습니다.

댓글을 작성하려면 로그인해야 합니다.