chào mọi người, em có chơi cái giải thuật ở đây https://serverheist.com (em không copy đề bài được do họ chống copy)
thì họ có cho bài giải thuật là
Có một con châu chấu muốn đi từ điểm A tới B với khoảng cách là a bước nhảy. Với mỗi bước nhảy, châu chấu có thể nhảy 1 bước hoặc b bước. Hỏi có bao nhiêu cách để châu chấu nhảy từ A tới B
Ví dụ
a = 3 và b = 2
jump(3, 2) = 3
Giải thích
- C1: Bước đầu nhảy 1 bước, bước 2 nhảy 2 bước (1 + 2 = 3)
- C2: Bước đầu nhảy 2 bước, bước 2 nhảy 1 bước (2 + 1 = 3)
- C3: Nhảy 1 bước 3 lần (1 + 1 + 1 = 3)
em có code như ở dưới, nhưng không hiểu bị sai ở đâu mà cứ báo lỗi 1 test case anh chị nào coi giúp em với được không
def fill_dp(a, b):
dp = {}
for i in range(0, b):
dp[i] = 1
for i in range(b, a + 1):
dp[i] = dp[i - 1] + dp[i - b]
return dp
def jump(a,b):
if a < 1 or b < 1:
return 0
dp = fill_dp(a, b)
return dp[a]