ajb8406   3년 전

코드에서의 변수 설정은 다음과 같습니다.

a: 스도쿠 판 (9*9 배열), v: 채워야할 칸의 좌표(pair의 벡터), w: 채운 칸의 좌표를 저장(백트래킹시 만약 안되면 다시 돌아가야 할 때 쓸 정보)

코드에서의 함수는 다음과 같이 설정했습니다.

crit: a[k][l]에 m이 들어갈 수 있으면 true 아니면 false 반환

sudoku: v의 끝 부터 crit이 true인 i값을 for문으로 집어넣고 스도쿠판 재설정, v, w 재설정 후 다시 재귀.

만약 crit이 다 false라면 전에 집어넣은 가정들이 오류이므로 w를 이용하여 백트래킹.

문제점: 제가 생각하는 시간초과의 원인은 스도쿠 판이 한번 완성되면 바로 함수를 종료하고 싶은데 그렇지 않고 for문을 끝까지 돌아서 가장 마지막으로 나올 수 있는 답안을 내기 때문인 것 같은데요.

이를 해결할 좋을 방법이 없을까요?

(코드를 배운지 얼마 되지않아 지저분하게 코드를 쓴 점 양해 부탁드립니다..)

ajb8406   3년 전

지금 보시면 코드에 v.empty()인데도 for문이 헛돌지않습니까?

그런걸 보고 시간낭비가 되는겁니다. 아시겠어요?

그런걸 수정하면 좀 발전할 가능성이 있어보입니다.

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