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

Chương trình tạo mảng bằng cách nối các mảng con của một mảng khác bằng Python

Giả sử chúng ta có một mảng 2D được gọi là nhóm và một số mảng khác. Chúng ta phải kiểm tra xem liệu chúng ta có thể chọn n mảng con rời rạc từ các số mảng sao cho mảng con thứ i bằng với các nhóm [i] (0-indexed) và nếu i> 0, mảng con thứ (i-1) sẽ xuất hiện trước đó mảng con thứ i trong nums.

Vì vậy, nếu đầu vào giống như nhóm =[[2, -2, -2], [4, -3,0]] nums =[1, -1,0,2, -2, -2,4, - 3,0], thì kết quả đầu ra sẽ là true vì nhóm mảng [0] có từ chỉ số 3 đến 5 trong số các num và nhóm [1] từ chỉ số 6 đến 8 trong số.

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

  • i:=0

  • đối với mỗi grp trong nhóm, hãy thực hiện

    • đối với j trong phạm vi i đến kích thước của nums - 1, thực hiện

      • nếu mảng con của nums [từ chỉ số j đến j + kích thước của grp] giống với grp, thì

        • i:=j + kích thước của grp

        • đi ra từ vòng lặp

      • nếu không,

        • trả về Sai

  • trả về True

Ví dụ

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

def solve(groups, nums):
   i = 0
   for grp in groups:
      for j in range(i, len(nums)):
         if nums[j:j+len(grp)] == grp:
            i = j + len(grp)
            break
      else:
         return False
   return True

groups = [[2,-2,-2],[4,-3,0]]
nums = [1,-1,0,2,-2,-2,4,-3,0]
print(solve(groups, nums))

Đầu vào

[[2,-2,-2],[4,-3,0]], [1,-1,0,2,-2,-2,4,-3,0]

Đầu ra

True