totok682   3년 전

if (graph[current][next] == 1 && !visited[next])

이부분을

if (graph[current][next]  && !visited[next]) 

로 바꾸게되면 오답이 나오게 되는데 제가 생각하고 있는게 맞는지 궁금해서 질문글 올립니다.


1.  graph배열을 초기화를 안시켜서 1이 아니라 쓰레기값이 들어있을 경우에도 if 문이 true로 인식되기 때문인가요?

2. 다른 분들 소스코드를 보면 == 1 같은걸 붙이지 않고 작성하셨는데, 왜 제 코드에서만 정상적으로 작동하지 않는걸까요?


답변 주시면 감사하겠습니다!

cubalys   3년 전

컴퓨터가 100번 까지 있으므로 배열을 101개 잡아야 합니다.

100번 컴퓨터를 확인하는 과정에서 graph변수로 선언되지 않은 메모리를 확인하기 때문에 쓰레기 값이 들어있는거 같네요

totok682   3년 전

@cubalys

감사합니다! 궁금한게 하나 더 있는데, 2차원 배열을 선언하고 초기화를 안하면 자동으로 0이 채워지나요 c++14 에서는?

cubalys   3년 전

전역변수로 선언하면 채워집니다

지역변수는 아니구요

totok682   3년 전

아 방금 찾아봤는데 바로 댓글이 달려버렸네요 ㅎㅎ

배웠던건데도 매번 까먹게 되네요 감사합니다!


지역변수로 선언시에는 {0} 으로 초기화 하던가 해야겠네요. 감사합니다 ^^

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