Giả sử chúng ta có hai số n và k. Chúng ta phải tìm chuỗi chữ thường nhỏ nhất về mặt từ vựng có kích thước k và khoảng cách n. Khoảng cách là tổng của số chữ cái trong bảng chữ cái. Ví dụ:'a' có chữ số 1, 'b' có 2, 'y' có 25, 'z' có 26, v.v.
Vì vậy, nếu đầu vào là n =15 k =3, thì đầu ra sẽ là "aam", vì "aam" là chuỗi nhỏ nhất về mặt từ vựng có độ dài 3 có khoảng cách là 1 + 1 + 13 =15.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- dist:=một mảng có kích thước k và điền bằng 1
- tín dụng:=n - k
- i:=k - 1
- trong khi tín dụng> 0, thực hiện
- val:=tối thiểu tín dụng và 25
- dist [i]:=dist [i] + val
- credit:=credit - val
- i:=i - 1
- nối (các ký tự của (d - 1 + ASCII của "a")) cho mỗi d trong dist) và trả về
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(n, k): dist = [1] * k credit = n - k i = k - 1 while credit > 0: val = min(credit, 25) dist[i] += val credit -= val i -= 1 return "".join(chr(d - 1 + ord("a")) for d in dist) n = 15 k = 3 print(solve(n, k))
Đầu vào
15, 3
Đầu ra
aam