
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Number of Ways to Win at Most K Consecutive Games in Python
Suppose we have two numbers n and k. Here n represents the number of games we are going to play. We have to find in how many ways we can win k or fewer games consecutively. If the answer is too large then mod the result by 10^9 + 7.
So, if the input is like n = 3 k = 2, then the output will be 7, as the possible ways in which we can win 2 or fewer times consecutively, are ["LLL", "WLL", "LWL", "LLW", "WWL", "LWW", "WLW"]
To solve this, we will follow these steps −
- m := 1^9 + 7
- Define a function dp() . This will take i, K
- if i >= n or K > k, then
- return true when K <= k, otherwise false
- return dp(i + 1, 0) mod m + dp(i + 1, K + 1) mod m
- From the main method, do the following −
- return dp(0, 0) mod m
Example
Let us see the following implementation to get better understanding −
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))
Input
4, 2
Output
5
Advertisements