2015112119   5년 전

큐와 pair를 이용해 bfs로 문제를 풀어보려고 했으나 틀렸다고 나오네요 예시와 반례는 정답이 나오고요

어디가 틀렸는지 잘 모르겠습니다. 

칸이 1이라 이동가능한경우, 한번도 이동하지않은경우 그리고 칸 내부의 조건하에

visited로 칸이 움직일때마다 이동한 회수를 저장해주었구요 bfs를 돌려보았지만 저는 모르겠네요

뭐가 문제일걸까요?

indioindio   5년 전

5 5

11111

00101

11100

10011

11111

6을 출력하네요.


사소(?)한 오타 때문인 것 같습니다.

specimen   5년 전

사소한 오타요?? 저도 이거 푼 적이 있어서 답변 해드리려고 찾아보고 있는데 뭔지 모르겠네요. ㅎㅎ

indioindio   5년 전

다른 그림 찾기 느낌이네요.

specimen   5년 전

아 찾았다....

specimen   5년 전

bfs함수 안에 마지막 if문 visited[x][y-1] = visited[x][y-1] + 1;로 되어 있네요. ㅎㅎ

visited[x][y] + 1; 로 바꾸니까 성공! 

indioindio님이 올려주신 반례를 x, y 각각 출력 해보니 각 4에 도달하는데 출력은 6으로 나와서 한참 찾았네여;;

2015112119   5년 전

으음 다들 고맙습니다! 그런데 42%에서 들렸다고 그러네요.. 생각해보니 첫 시작이 0인 경우에는 0을 출력해야하니 그것도 고려하고 도와주신 visited[x][y]도 고쳤는데 틀렸다는 이유가 뭘까요? 마지막에 

if (arr[0][0] == 0) cout << 0; else cout << bfs(0, 0);

이렇게 바꿔주었습니다. 하지만 역시 틀렸다고 나오니 잘 모르겠네요..

indioindio   5년 전

inside도 바꿔주셔야 할 것 같습니다.

현재의 x,y가 범위 내에 있다고해서 다음 좌표 또한 inside인 것은 아니니까요.

2015112119   5년 전

그랬었네요 inside를 inside(x,y)로 바꿔서 때에 맞는 인수를 넣어주었더니 정답이 나왔습니다!굿굿

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