Python程式:計算最多連勝k場的獲勝方式數量
假設我們有兩個數字n和k。其中n表示我們將要玩的遊戲數量。我們必須找出以多少種方式我們可以連續贏得k場或更少場遊戲。如果答案過大,則將結果模 10^9 + 7。
因此,如果輸入類似於n = 3 k = 2,則輸出將為7,因為我們可以連續贏得2場或更少場遊戲的可能方式是["LLL", "WLL", "LWL", "LLW", "WWL", "LWW", "WLW"]
為了解決這個問題,我們將遵循以下步驟:
- m := 1^9 + 7
- 定義一個函式dp()。它將接收i和K作為引數
- 如果i >= n 或 K > k,則
- 返回K <= k時為真,否則為假
- 返回dp(i + 1, 0) mod m + dp(i + 1, K + 1) mod m
- 從主方法中執行以下操作:
- 返回dp(0, 0) mod m
示例
讓我們看看以下實現以獲得更好的理解:
def solve(n, k): m = 1**9 + 7 def dp(i, K): if i >= n or K > k: return K <= k return dp(i + 1, 0) % m + dp(i + 1, K + 1) % m return dp(0, 0) % m n = 4 k = 2 print(solve(n, k))
輸入
4, 2
輸出
5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP