n개의 행과 m개의 열이 있는 그리드가 있다고 가정합니다. Amal과 Bimal은 그 그리드에서 게임을 하고 있습니다. 게임 규칙은 아래와 같습니다 -
Amal은 흰색 연꽃 기와를 맨 윗줄 어딘가에 놓고 Bimal은 애벌레 기와를 맨 아래 줄 어딘가에 놓습니다. Amal이 게임을 시작하고 그들은 번갈아가며 플레이합니다. Amal은 자신의 타일을 현재 셀의 그리드 내부에 있는 8개의 인접한 셀 중 하나로 이동할 수 있지만 Bimal의 애벌레 타일은 그리드 내부에서 왼쪽이나 오른쪽으로만 이동하거나 같은 위치에 머무를 수 있습니다. Amal의 목표는 가능한 한 적은 수의 이동으로 Bimal을 잡는 것이며 Bimal(애벌레 타일 포함)은 가능한 한 오래 생존해야 합니다. 그들이 무작위로 두 개의 기둥을 선택하여 연꽃과 애벌레를 놓으면 우리는 Amal이 이 게임에서 승리하는 데 필요한 예상 이동 수를 찾아야 합니다.
따라서 입력이 n =5 m =7과 같으면 출력은 4.571428571428571이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- r :=0
- 0 ~ m - 1 범위의 l에 대해
- 온도 :=n - 1.0
- l>=n이면
- 온도 :=온도 + (l - n + 1) * ((l - 1) / m)
- l
- 온도 :=온도 + (m - n - l) * ((m - l - 2) / m)
- r :=r + 온도 / m
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n, m): r = 0 for l in range(m): temp = n - 1.0 if l >= n: temp += (l - n + 1) * ((l - 1) / m) if l < m - n: temp += (m - n - l) * ((m - l - 2) / m) r += temp / m return r n = 5 m = 7 print(solve(n, m))
입력
5, 7
출력
4.571428571428571