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

โปรแกรมตรวจสอบเราสามารถสร้างอาร์เรย์จากชิ้นส่วนหรือไม่ใน Python


สมมติว่าเรามีจำนวนอาร์เรย์ที่องค์ประกอบทั้งหมดไม่ซ้ำกันและมีอาร์เรย์อื่นที่มีอาร์เรย์ขนาดเล็กต่างกันเรียกว่าชิ้นส่วน เราต้องตรวจสอบว่าเราสามารถหาค่าตัวเลขของอาร์เรย์หลักได้หรือไม่โดยการต่ออาร์เรย์เป็นชิ้นๆ ในลำดับใดๆ ก็ตาม แต่เราไม่ได้รับอนุญาตให้จัดลำดับองค์ประกอบใหม่ในแต่ละส่วนของอาร์เรย์[i]

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[5,1,12,36,2,47,6] ชิ้น =[[2,47,6],[12,36],[1],[5]], แล้วผลลัพธ์จะเป็น True เพราะเราสามารถต่อพวกมันในลำดับนี้ [[5], [1], [12,36], [2,47,6]] เพื่อรับอาร์เรย์หลัก

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • temp :=รายการใหม่

  • สำหรับแต่ละ p เป็นชิ้น ๆ ทำ

    • ถ้า p[0] ไม่มีอยู่ใน nums แล้ว

      • คืนค่าเท็จ

    • l :=ขนาดของ p

    • indx :=index(p[0]) เป็น nums

    • ถ้า subarray ของ nums จาก index indx ถึง indx+l-1 ไม่เหมือนกับ p ดังนั้น

      • คืนค่าเท็จ

    • มิฉะนั้น

      • ต่อท้าย p หลังจากอุณหภูมิ

  • ถ้าขนาดของ nums เท่ากับขนาดของ temp แล้ว

    • คืนค่า True

  • มิฉะนั้น

    • คืนค่าเท็จ

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(nums, pieces):
   temp = []
   for p in pieces:
      if p[0] not in nums:
         return False
      l = len(p)
      indx = nums.index(p[0])
      if nums[indx:indx+l] != p:
         return False
      else:
         temp.extend(p)
   if len(nums) == len(temp):
      return True
   else:
      return False

nums = [5,1,12,36,2,47,6]
pieces = [[2,47,6],[12,36],[1],[5]]
print(solve(nums, pieces))

อินพุต

[5,1,12,36,2,47,6], [[2,47,6],[12,36],[1],[5]]

ผลลัพธ์

True