know 값의 정의를 저렇게 해서 잘 작동할지 모르겠어요.
i번째 파티에서 거짓말을 했는지의 여부가 state와 같을 때, 할 수 있는 최대 거짓말의 갯수가 dp[i][state]에 저장되어있고,
바로 그 때 각각의 사람들이 알고 있는지의 여부가 know[i][state][...]에 적혀 있는데요,
딱 dp[i][state]개의 거짓말을 하는 방법이 굉장히 여러 가지가 있을 수 있고,
그중에 딱 한 가지 경우(dp[i-1][...]에서 넘어온 경우)만 know에 적어놓고 사용하고 있잖아요??
적어놓은 그 know값을 사용해서 그 뒤의 값들도 구해 나가는게
항상 최적일까요...?
저는 그렇지 않을 것 같아요ㅠㅠ
Rose 5년 전
일단 dp 배열 2개로 상태를 표시하였구요,
d[i][state]=
{
state:0 : 현재 파티에서 거짓말을 했을시 현재까지 할수있는 최대 거짓말
state:1 : 현재 파티에서 참말을 했을시 현재까지 할수있는 최대 거짓말
{
know[i][state][j]= d배열이 d[i][state]상태일때 j사람이 알고있는 사실(0: 거짓말, 1: 참말, -1: 아무것도 모르는 상태)
//솔루션:
2. 자기 이전 배열(d[i-1][state]) 을 참고하여 만약 현재 파티에서 거짓말을 할수 있다면( know 배열을 참고하여 ) 거짓말을 했을시와 참말을 했을시를 각각 구해준다.
혹시 제 솔루션에 문제가 있는건가요?? 아님 그냥 구현을 잘못한걸까요??
(질문게시판의 모든 예제 다넣어보아도 정상적으로 돌아가는거 확인하였습니다.)