Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình để kiểm tra chúng ta có thể tạo mảng từ các mảnh hay không trong Python

Giả sử chúng ta có một số mảng trong đó tất cả các phần tử là duy nhất và có một mảng khác với các mảng nhỏ hơn khác nhau được gọi là các mảng. Chúng ta phải kiểm tra xem liệu chúng ta có thể lấy số mảng chính bằng cách nối các mảng theo thứ tự bất kỳ hay không. Nhưng chúng tôi không được phép sắp xếp lại thứ tự các phần tử có trong mỗi phần của mảng [i].

Vì vậy, nếu đầu vào giống như nums =[5,1,12,36,2,47,6] piece =[[2,47,6], [12,36], [1], [5]], thì đầu ra sẽ là True vì chúng ta có thể nối chúng theo thứ tự này [[5], [1], [12,36], [2,47,6]] để có được mảng chính.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • temp:=một danh sách mới

  • đối với mỗi p trong từng phần, hãy thực hiện

    • nếu p [0] không có trong nums thì

      • trả về Sai

    • l:=kích thước của p

    • indx:=index (p [0]) tính bằng nums

    • nếu mảng con gồm các num từ chỉ mục indx đến indx + l-1 không giống với p, thì

      • trả về Sai

    • nếu không,

      • nối p sau tạm thời

  • nếu kích thước của nums giống với kích thước của nhiệt độ thì

    • trả về True

  • nếu không,

    • trả về Sai

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

True