chlwlsgur000   1년 전

14500번 문제를 dfs를 이용하여 푸는 중입니다.

ㅗ 모양을 제외한 4가지 모양만 dfs가지고 최대값을 구하는 코드를 짰는데요.


cnt 에 1을 더해주는 과정의 위치에 따라 출력 값이 다르게 나오는데 도통 왜 그런지 이해가 되지 않습니다. 
예를 들면

출력예제 1번을 넣으면

1.  이 코드는 출력값으로 잘못된 값인 16이 나옵니다.

if(!visit[curRow][curCol]) {

            visit[curRow][curCol] = true;
             cnt += 1; 

              solved(curRow, curCol, sum + board[curRow][curCol], cnt);

            visit[curRow][curCol] = false;

}

2. 이 코드는 출력값으로 정상 출력되어 19가 나옵니다.

if(!visit[curRow][curCol]) {

         visit[curRow][curCol] = true;
                       

          solved(curRow, curCol, sum + board[curRow][curCol], cnt + 1);

          visit[curRow][curCol] = false;

}

cnt에 1을 더해주고 그 1을 더해진 cnt를  인자값으로 넘겨 주거나

cnt에 1을 더해서 인자값으로 넘겨주거나 

말은 같은데 왜 출력값이 다르게 나올까요?

ngchaneok   1년 전

59번째 줄 for문을 돌 때 cnt의 값은 일정해야 합니다.

예를들어 i가 1일 때, cnt += 1을 해버리면 i가 2일 때 cnt의 값은 1 증가된 상태로 처리되기 때문에 올바르지 않은 것 같습니다.

chlwlsgur000   1년 전

이해했습니다 ! 감사합니다!!

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