Hôm qua tôi đã hỏi câu hỏi này về xáo trộn riffle. Có vẻ như câu hỏi hôm nay hơi khó nên câu hỏi này là một nhiệm vụ liên quan nhưng dễ dàng hơn nhiều.
Hôm nay bạn được yêu cầu xác định xem một hoán vị trong thực tế là một shuffle riffle. Định nghĩa của chúng tôi về xáo trộn riffle được điều chỉnh từ câu hỏi cuối cùng của chúng tôi:
Phần đầu tiên của shuffle là sự phân chia. Trong phân vùng chia bộ bài thành hai. Hai tiểu mục phải liên tục, loại trừ lẫn nhau và toàn diện. Trong thế giới thực muốn làm cho phân vùng của bạn càng gần càng tốt, tuy nhiên trong thử thách này, đây không phải là một sự cân nhắc, tất cả các phân vùng bao gồm cả các phân vùng bị suy biến (một phân vùng trống) đều được xem xét như nhau.
Sau khi chúng được phân vùng, các thẻ được ghép lại với nhau theo cách các thẻ duy trì trật tự tương đối của chúng trong phân vùng mà chúng là thành viên . Ví dụ: nếu thẻ A nằm trước thẻ B trong cỗ bài và thẻ A và B nằm trong cùng một phân vùng, thẻ A phải ở trước thẻ B trong kết quả cuối cùng, ngay cả khi số lượng thẻ giữa chúng tăng lên. Nếu A và B ở các phân vùng khác nhau, chúng có thể theo bất kỳ thứ tự nào, bất kể thứ tự bắt đầu của chúng, trong kết quả cuối cùng.
Mỗi shuffle riffle sau đó có thể được xem như là một hoán vị của bộ bài gốc. Ví dụ hoán vị
1,2,3 -> 1,3,2
là một shuffle riffle. Nếu bạn chia boong như vậy
1, 2 | 3
chúng tôi thấy rằng mọi thẻ trong 1,3,2
đều có cùng thứ tự tương tự với mọi thẻ khác trong phân vùng của nó. 2
vẫn là sau 1
.
Mặt khác, hoán vị sau đây không phải là một shuffle riffle.
1,2,3 -> 3,2,1
Chúng ta có thể thấy điều này bởi vì tất cả hai phân vùng (không tầm thường)
1, 2 | 3
1 | 2, 3
có một cặp thẻ không duy trì thứ tự tương đối của chúng. Trong phân vùng đầu tiên 1
và 2
thay đổi thứ tự của họ, trong khi trong phân vùng thứ hai 2
và 3
thay đổi thứ tự của họ.
Bài tập
Đưa ra một hoán vị thông qua bất kỳ phương pháp hợp lý nào, xác định xem nó đại diện cho một xáo trộn riffle hợp lệ. Bạn nên xuất hai giá trị hằng số riêng biệt một cho "Có, đây là xáo trộn riffle" và một cho "Không, đây không phải là xáo trộn riffle".
Đây là môn đánh gôn, vì vậy câu trả lời sẽ được tính bằng byte với ít byte hơn.
Các trường hợp thử nghiệm
1,3,2 -> True
3,2,1 -> False
3,1,2,4 -> True
2,3,4,1 -> True
4,3,2,1 -> False
1,2,3,4,5 -> True
1,2,5,4,3 -> False
5,1,4,2,3 -> False
3,1,4,2,5 -> True
2,3,6,1,4,5 -> False
[3,1,4,2,5]
.
[2,3,6,1,4,5]
.
[0, ..., n-1]
thay vì [1, ..., n]
làm đầu vào không?
0
cho sai nhưng có bất kỳ số nguyên nào[1, +∞)
cho sự thật không?