해결된 질문
작성
·
103
0
안녕하세요 선생님! 항상 수업 잘 듣고 있습니다
다름이 아니라 저는 dp에 값이 있으면은 사이클이 생긴다는 가정으로 최대숫자를 반환해서 처리하였는데요.
몇 번 시도하였는데 계속 틀림이 뜨네요 ^^;
http://boj.kr/56bf4bf2cf4d411fb652d50f54160a7e
그래서 선생님 답안을 보았는데 visited 배열을 따로 만드시고 나중에는 방문 미처리를 해주셨더라고요. 나중에 방문 미처리 해주시는 것이 이해가 잘 안가 왜 그렇게 해주셨는지 궁금합니다!
미리 감사드립니다~ 🙇♀
답변 1
1
안녕하세요 ㅎㅎ
check[y][x] = 1;
int value = (int)b[y][x] - '0';
for(int i = 0; i < 4; i++){
int ny = y + dy[i] * value;
int nx = x + dx[i] * value;
ret= max(ret,down(ny,nx) + 1);
}
check[y][x] = 0;
이부분 말씀이시죠?
예를 들어
a -> b -> c -> d
를 간다음
a -> b -> d -> c
를 가야 한다고 해볼게요.
이 경우 c, d가 방문되어있다면 d -> c라는 경우의 수를 파악하지 못하겠죠?
모든 경우의 수를 파악하기 위해서 하는 장치라고 보시면 됩니다.
감사합니다.