bupjae   6년 전

이 답안에서 사용한 언어는 octave (거칠게 이야기하면 MATLAB의 open source 구현체) 입니다.

 

https://en.wikipedia.org/wiki/Absorbing_Markov_chain에 설명한 방법대로 행렬 Q를 만든 뒤 N = (I - Q)^-1 를 하고 1열(시작점)의 모든 요소를 더했습니다.

행렬 Q를 만들 때 index 배정은 초기 상태인 "보드의 바깥"은 포함, N은 제외, 뱀 또는 사다리의 시작점은 제외하고 1부터 순서대로 배정했습니다.

행렬의 역행렬이 존재하지 않을 때에는 Absorbing Markov chain 의 조건인 "어느 칸에 말이 놓여 있든 도착점까지 가는 방법이 존재해야 한다"을 위반하는 경우이기 때문에 -1을 출력합니다.

 

이 답안이 런타임 에러를 내뱉고 있는데 어디서 틀렸는지 알고싶습니다.

bupjae   6년 전

재채점 이후 이 답안이 "런타임 에러"에서 "틀렸습니다"로 바뀌었습니다.

아무래도 정확도 관련 문제인 것 같으니 (특히 역행렬 연산은 정확도가 매우 떨어지는 걸로 악명이 높음) 스스로 좀 더 살펴보겠습니다.


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