Cho hai chuỗi s, t và số nguyên dương n. Tìm hạng thứ n của dãy A với:
A[0] = sA[1] = tA[n] = A[n-1] + A[n-2]nếunchẵn, ngược lạiA[n] = A[n-2] + A[n-1].
s = "a", t = "b" -> dãy: ["a", "b", "ba", "bba", "bbaba"].
Ví dụ, s = "pk", t = "r", n = 4, đầu ra "rrpkrpk".
Các bước giải quyết:
- Nếu
n == 0trả vềs; nếun == 1trả vềt. a := s,b := t.- Với
itừ 2 đếnn:- Nếu
i % 2 == 0:c = b + a. - Ngược lại:
c = a + b. a = b,b = c.
- Nếu
- Trả về
c.
Ví dụ minh họa
class Solution:
def solve(self, s, t, n):
if n == 0:
return s
elif n == 1:
return t
a = s
b = t
for i in range(2, n + 1):
if i % 2 == 0:
c = b + a
else:
c = a + b
a = b
b = c
return c
ob = Solution()
print(ob.solve("pk", "r", 4))
Đầu vào
"pk", "r", 4
Đầu ra
rrpkrpk