Cho một cầu thang n bậc, có thể leo 1 hoặc 2 bậc mỗi lần. Tìm số cách duy nhất để leo lên đỉnh. Thứ tự các bước quan trọng, mỗi thứ tự khác nhau tính là một cách. Nếu kết quả lớn, lấy modulo 10^9 + 7.
Ví dụ, n = 5, đầu ra là 8. Các cách:
- 1, 1, 1, 1, 1
- 2, 1, 1, 1
- 1, 2, 1, 1
- 1, 1, 2, 1
- 1, 1, 1, 2
- 1, 2, 2
- 2, 1, 2
- 2, 2, 1
Các bước giải quyết:
- Tạo mảng
dpkích thướcn+1khởi tạo 0. dp[1] = 1.- Với
itừ 2 đếnn+1:dp[i] = dp[i-1] + dp[i-2]. - Trả về phần tử cuối của
dpmodulom.
Ví dụ minh họa
m = (10**9) + 7
class Solution:
def solve(self, n):
dp = [0 for _ in range(n + 2)]
dp[1] = 1
for i in range(2, n + 2):
dp[i] = dp[i-1] + dp[i-2]
return dp[-1] % m
ob = Solution()
print(ob.solve(5))
Đầu vào
5
Đầu ra
8