Python程式:計算贏得蓮花與毛毛蟲遊戲中所需預期步數
假設我們有一個n行m列的網格。Amal和Bimal在這個網格上玩遊戲。遊戲規則如下:
Amal在頂行某個位置放置白色蓮花棋子,Bimal在底行某個位置放置毛毛蟲棋子。Amal先開始遊戲,他們輪流進行。Amal可以將他的棋子移動到當前單元格網格內任何8個相鄰單元格,但Bimal的毛毛蟲棋子只能在網格內向左或向右移動,或者保持在同一位置。Amal的目標是用盡可能少的步數抓住Bimal,而Bimal(用毛毛蟲棋子)則必須儘可能長時間地生存。如果他們隨機選擇兩列放置他們的蓮花和毛毛蟲,那麼我們必須找到Amal贏得這場遊戲所需的預期步數。
因此,如果輸入為n = 5 m = 7,則輸出為4.571428571428571。
為了解決這個問題,我們將遵循以下步驟:
- r := 0
- 對於l從0到m - 1迴圈:
- temp := n - 1.0
- 如果l >= n,則
- temp := temp + (l - n + 1) * ((l - 1) / m)
- 如果l < m - n,則
- temp := temp + (m - n - l) * ((m - l - 2) / m)
- r := r + temp / m
- 返回r
示例
讓我們看看下面的實現,以便更好地理解:
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP