Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra có thể tạo mảng từ các mảnh ghép không trong Python

Giả sử ta có mảng nums các phần tử duy nhất và mảng pieces chứa các mảng con nhỏ hơn. Kiểm tra xem có thể tạo nums bằng cách nối các mảng trong pieces theo bất kỳ thứ tự nào không. Không được sắp xếp lại phần tử bên trong pieces[i].

Ví dụ: nums = [5,1,12,36,2,47,6], pieces = [[2,47,6],[12,36],[1],[5]], kết quả True vì nối theo thứ tự [[5],[1],[12,36],[2,47,6]] được nums.

Giải thuật

  1. temp := []
  2. Với mỗi p trong pieces:
    • Nếu p[0] not in nums: trả về False
    • l := len(p)
    • indx := nums.index(p[0])
    • Nếu nums[indx:indx+l] != p: trả về False
    • Ngược lại: temp.extend(p)
  3. Nếu len(nums) == len(temp): trả về True
  4. Ngược lại: trả về False

Ví dụ (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))

Input

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

Output

True