annemeier   9년 전

런타임 에러가 나서 어디가 오류인지 확인이 안되요

도와주세요ㅠㅠ

코드가 길어서 죄송합니다.. 어떻게 풀었는지 요약해볼게요

1. 세로선과 가로선을 구분해 두개의 보드에 저장한다.

1b3ff1827eb47e95004b6202dd420167.jpg       

2. 교차하는 지점에 룩을 놓는다고 하면

하나의 점에 룩을 놓으면 그 점을 지나는 가로선, 세로선에는 다른 룩을 놓을 수 없다. 

그러므로 최대한 많은 세로선과 가로선이 쌍을 짓게 만든다. 

3. 오직 하나의 선과 연결할 수 있는 가로선 또는 세로선은 다른 선과 연결한다.

연결되는 지점에 룩을 놓는다.

더 이상, 하나의 선만 연결되는 가로선 또는 세로선이 없으면

남은 선이 적은쪽은 모두 연결되므로 이 수만큼 룩을 놓을 수 있다.

sujin   9년 전

n의 크기가 100이므로 가로선의 갯수는 최대 5000개 정도까지 가능할 것입니다.

그러면 board1[i][j+1] = '0' + row; 에서 board1은 char 형 배열이므로 오버플로우가 발생하고

x = board1[i][j] - '0'; 에서 x가 음수값을 가지게될 수 있으며,

matrix[x - 1][y - 1] = 1; 재앙이 일어납니다

annemeier   9년 전

감사합니다! 깨달음을 얻었습니다

방금 수정해서 제출했더니 시간초과가 뜨네요 :)

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