yoohoo030   1년 전

질문게시판 보면서 최대한 수정했는데 계속해서 메모리초과가 나네요ㅠㅠ

몇시간째 수정해도 답이 안나와서 질문 올립니다. 도와주세요 고수님들😭

wizardrabbit   1년 전

안녕하세요? 디버깅 결과, for문의 종료조건이 잘못되어 경로를 역추적하는 과정에서 무한루프가 돌 수 있음을 확인했습니다.

for (int i = dest; i != 1; i = path[i])

경로를 역추적하는 for문인 52번째 줄의 종료 조건은 i 값이 1인 경우인데, 이 경우 시작하는 정점의 번호가 1이 아닌 경우 탐색 경로에 1번 정점이 들어가지 않는 케이스가 생길 수 있는데, 이 경우 1번 정점을 찾지 못 해 for문이 종료되지 못하고 무한 루프를 돌 수 있습니다.

우리가 원하는 것은 경로의 시작인 시작 정점을 만났을 때 경로 탐색을 멈추고 종료하는 것이니, 종료 조건을 시작 정점을 만났을 때로 변경해 주시면 문제를 맞추실 수 있습니다.

궁금증이 해결되셨기를 바랍니다!

yoohoo030   1년 전

헉 제가 왜 시작 지점이 1이라고 착각했을까요..!! ㅠㅠ 시간초과도 아니고 메모리초과길래 제가 코드를 잘못 써서 무한루프가 도는 거라고는 생각을 못했습니다. 말씀하신 부분 수정하니까 바로 정답처리 되네요!! 정말 너무너무 감사합니다!!!

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