2016년 6월 1일 수요일

BOJ 1348 주차장 runtime error

원인은... memset에 있었다....

시간을 조금이라도 줄인답시고... memset(visited, false, sizeof(car)*4)로 했는데...
visited 배열은 boolean배열이므로... sizeof(car)*4가 아닌 sizeof(car)*1을 해야한다...

devC++에서는 runtime error가 안뜨는데... 휴..
ubuntu에서 해봐야겠다. ubuntu에서도 안뜨네.. 옵션같은 것을 걸어줘야되나..음 모르겠다.

그리고 저런 것은 에러가 나도 찾기가 힘드니... sizeof(visited)를 그냥 쓰거나.. 그냥
vector<bool>(car.size(), false)로 초기화를 해주거나 하자...


그리고 또하나... 에러 찾느라 엄청 고생한 것...
-> 이분매칭 구현 코드에서 dfs부분...if(bMatch[b]==-1 || dfs(bMatch[b]))로 해야되는데,
나도 모르게 if(bMatch[b]==-1 && dfs(bMatch[b]))로 했다가 에러찾느라 고생했다. 설마 여기서 실수했을 줄이야... 근데 왜 에러가 생긴거지-> 생각해보니까 && 해놓으면 dfs(-1)이 호출될 수 있어서 배열 범위를 넘어가게 되는 것 때문에 에러가 생긴 것 같다.

주의하자...!

댓글 없음:

댓글 쓰기