solibaht   2년 전

vector를 사용하면 메모리 초과가 발생하지 않는데 array를 사용하면 메모리 초과가 발생합니다. ㅠㅡㅠ

32800이면 메모리를 그렇게 많이 잡아 먹는 것도 아니고 recursion에서 메모리 초과가 발생했다면 vector를 썼을 때도 문제가 있어야 할 거 같은데...

왜 이러는지 궁금해 미칠 거 같네요.

살려주세요...

djm03178   2년 전

반으로 나누는 부분에 하자가 있습니다. N이 30이면 N/2는 15인데, [0,15]는 16개의 수이고 [16,29]는 14개의 수로 2개 차이가 납니다. 배열의 크기가 2^15까지만 수용할 수 있도록 만들어졌기 때문에 16개의 수를 완전탐색하면 도중에 배열의 크기를 넘어서게 되어 undefined behavior가 됩니다.

djm03178   2년 전

vector를 사용한 코드는 보지는 않았지만 아마도 push_back을 쓰셨기 때문에 불균일하게 나뉘더라도 시간상 손해가 있을 뿐 범위를 초과하는 문제는 없었을 거라고 추측합니다.

solibaht   2년 전

범위를 조금 조절했더니 해결됐네요!

정말 예리하시네요 :)

감사합니다.

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