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
temp := []- Với mỗi
ptrongpieces:- 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)
- Nếu
- Nếu
len(nums) == len(temp): trả vềTrue - 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