jinny9650   2년 전

입력받은 map 배열에 지나온 경로를 '0'으로 바꾸면서 bfs를 진행하면 메모리 초과가 발생하게 됩니다.(주석처리 안된 코드)

하지만, visited 이차원 배열을 하나 더 만들어서 지나온 경로를 true로 설정하면서 bfs를 진행하면 답이 맞게 나옵니다.(주석처리된 코드)

 두 방법에 무슨 차이가 있어서 하나는 메모리 초과가 발생하는 걸까요..?

srand   2년 전

if(map[ncol][nrow]=='1') {
    Q.push({ncol,nrow,k+1});
}

18, 34번째 줄 Q 에 넣을 때 중복해서 넣을 수 있습니다.

Q.push 이후

map[ncol][nrow] = '0' 

을 추가해서 중복해서 Q에 넣지 않도록 해주시면 됩니다.


혹은 map 변수의 값을 따로 써야 한다면, 주석처리 된 것처럼 별도 변수를 만들어 중복 push 하지 않도록 하시면 됩니다.

jinny9650   2년 전

오!! 해결됐습니다

선생님 감사합니다!!

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