hellowfriend   5달 전

코드를 보시면 visited[i]에 1과 -1을 넣어서 선택, 비선택으로 구분하고 있는데 98%에서 "틀립니다."라는 메세지가 나옵니다.

visited[i]에 1과 -1뿐만 아니더라도 서로 같지 않은 0이 아닌 수 2개로 선택, 비선택을 구분하면 똑같은 메세지가 나옵니다.

그러나 0과 0이 아닌 수로 선택, 비선택을 구분하면 "맞았습니다."라는 메세지가 나옵니다.

이유가 궁금합니다. 아시는 분은 알려주시면 감사하겠습니다.

좋은 하루 되세요!

osthus   5달 전

visited가 전역변수로 선언되었기 때문에 0으로 초기화됩니다. N/2개가 1로 연속 선택된 후에 두 팀의 능력치 합을 구하는 경우, 선택 되지 않은 쪽은 0으로 남아있습니다. 선택 여부를 0과 0이 아닌 수로 하면 영향이 없지만, 0이 아닌 다른 두 수를 사용하게 되면 문제가 발생하게 됩니다. 

recursion 함수에서 두 팀의 능력치 합을 구할 때 visited의 값을 출력해보시면 확인할 수 있습니다.

0이 아닌 다른 두 수를 사용하고 싶다면, 비선택으로 사용할 수로 visited를 초기화 해주면 됩니다.

hellowfriend   5달 전

감사합니다! 명쾌하네요!

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