
(C++) minisat을 이용하여 Einstein Riddle 해결하기
·
Coding Test Practice/C++
시작에 앞서...전체 코드는 글 최하단에 있습니다.SAT 문제란?(~A || ~B) && (B || C) && (~C) 와 같은 식을 true로 만들기 위해서는변수값AfalseBtrueCfalse 위의 표의 값이 각 변수의 값이 되어야만 한다. 이처럼 전체 식을 true로 만드는 각 절 내부의 변수값들을 찾는 것을 SAT 문제라고 한다.여기서는 minisat 프로그램을 사용할 것이며 위의 문제를 minisat 형식으로 나타내면 다음과 같다 p cnf 변수의수 절의개수 -1 -2 0 2 3 0 -3 01은 A, 2는 B, 3은 C를 나타내며 음수는 not 연산을 나타낸다.맨끝의 0은 한 절이 끝났음을 의미한다.문제 내용Einstein Riddle은 각 집에 사는 사람들의 조건이 주어졌..