karz9407   4년 전

정점 1번 말고 다른 예외처리도 확인한거 같은데 어디가 문제인지...

계속 돌려봐도 알 수가 없습니다. ㅠㅠ 조언 부탁드립니다..

표준만 가지고 짜려니 메모리 관리가 너무 어렵네요 ㅠㅠ

bupjae   4년 전

이 프로그램은 한 노드의 최대 차수가 2001개 라고 가정하고 작성했습니다만, 입력에는 이러한 조건이 없습니다.

bupjae   4년 전

고민중인 가장 큰 걸림돌이 5번째 줄에서 시도하려고 하는 자료구조 라고 생각됩니다.

만약 (C가 아닌) C++ 언어를 쓰신다면 번호를 넣을 때마다 (자동적으로) 공간을 재할당해주는 vector 와 같은 container 를 사용할 수 있습니다.

만약 (C++ 가 아닌) C를 쓰신다면, 동적 메모리 할당을 사용하셔야 합니다.

 


karz9407   4년 전

2001개는 계속 메모리 초과가 발생해서 제가 임의로 넣어준 값이고, 이렇게 넣었는데 stack overflow가 발생할 때 나타나는 결과인 "런타임 에러" 가 아닌 "틀렸습니다" 가 나와서 뭔가 알고리즘 상 결점이 있는것 같습니다...

Sizeof 함수로 동적 할당을 해준다면 시간에 문제가 생길 것 같은데 문제가 없을까요??

bupjae   4년 전

선언한 메모리 영역을 넘어서는 곳의 값을 읽거나 쓰는 프로그램의 결과는 정의되지 않습니다. (Undefined Behavior)

Undefined Behavior 가 발생했다면, 그 프로그램의 결과는 생각할 수 있는, 그리고 생각조차 못한 어떠한 결과라도 나올 수 있습니다.

*대부분의* 경우 "런타임 에러"를 받겠지만, "틀렸습니다", "시간 초과", "출력 초과", 심지어 "맞았습니다" 도 가능합니다.

 

동적 할당은 물론 시간 소모가 있지만, 시간 초과가 걱정될 만큼은 아니며, 대부분의 경우 무시할 수 있습니다.

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