Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาสตริงเล็กที่สุดที่มีค่าตัวเลขกำหนดใน Python

ปัญหา

ให้ n (ความยาว) และ k (ค่าตัวเลข) หาสตริงเล็กซิโคกราฟิกน้อยที่สุด ค่าตัวอักษร: a=1, b=2, ..., z=26 ค่าสตริง = ผลรวมค่าตัวอักษร

ตัวอย่าง

n=4, k=16 → "aaam" (1+1+1+13=16)

ขั้นตอนการแก้ปัญหา

  1. string := ""
  2. بينما n > 0:
    • letter := min(26, k - n + 1)
    • string += chr(letter + ord('a') - 1)
    • k -= letter; n -= 1
  3. คืน string[::-1] (กลับลำดับ)

การนำไปใช้งาน (Python)

def solve(n, k):
    string = ""
    while n > 0:
        letter = min(26, k - n + 1)
        string += chr(letter + ord('a') - 1)
        k -= letter
        n -= 1
    return string[::-1]

n = 4
k = 16
print(solve(n, k))

อินพุต

4, 16

เอาต์พุต

aaam