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

โปรแกรมสร้างตัวเลข n ตัวแรกในลำดับเล็กซิโครกราฟิกใน Python

สมมติว่ามีตัวเลข n ต้องการหาตัวเลข n ตัวแรกที่เรียงตามลำดับเล็กซิโครกราฟิก (lexicographic order)

ตัวอย่าง: n = 15 ผลลัพธ์คือ [1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]

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

  1. count = 1, ans = [count]
  2. วนลูป بينما len(ans) < n:
    • count *= 10
    • วนลูป بينما count > n:
      • count //= 10
      • count += 1
      • วนลูป بينما count % 10 == 0: count //= 10
      • เพิ่ม count เข้า ans
  3. คืนค่า ans

ตัวอย่างโค้ด

class Solution:
    def solve(self, n):
        count = 1
        ans = [count]
        while len(ans) < n:
            count *= 10
            while count > n:
                count = count // 10
                count += 1
                while count % 10 == 0:
                    count = count // 10
                ans.append(count)
        return ans

ob = Solution()
n = 15
print(ob.solve(n))

อินพุต

15

เอาต์พุต

[1, 10, 11, 12, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9]