qmffld102   3년 전

정렬을 하지 않기 위해서 새로 추가되는 나무를 q에 넣었고 spring함수에서 tail부터 head까지 양분을 주면서 어린순서대로 양분을 줄 수 있게 짰습니다. 예제도 다 맞고 반례도 다 돌아가던데 어디가 틀린건지 모르겠습니다..

seico75   3년 전

우선 위 소스를 그대로 넣으면 메모리 초과가 나옵니다.  q 크기가 너무 커서...

틀렸습니다의 원인은 61줄입니다.

scanf("%d %d %d", &q[++tail].y, &q[tail].x, &q[tail].size);

이것은 함수의 파라메터 계산이 왼쪽에서 오른쪽 순으로 진행될 것이라는 가정인데 실제로는 그렇게 보장이 되지 않습니다.

그래서 ++tail 를 scanf 앞으로 따로 빼야 합니다.

보통 단항연산자는 해당 변수가 그 라인에 한번만 나올때 사용하지 여러번 나올때는 피해야 합니다.

(for 문의 경우는 순서가 분명하기 때문에 마지막 칸에서는 써도 되겠지만, 위와 같은 그외의 경우...)

qmffld102   3년 전

감사합니다ㅜㅜ ++tail을 앞으로 빼니까 맞았습니다 다음부터는 scan안에 넣지 않아야 겠습니다 답변 감사드립니다!!

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