Saturday 21 December 2019

MDL - Medel


Solution: Giả sử ta có dãy A như testcase số 2, A = {38, 9, 102, 10, 96, 7, 46, 28,  88, 13}.
  1. Ta xóa 38, còn lại {9, 102, 10, 96, 7, 46, 28,  88, 13}
  2. Ta xóa 10, còn lại {9, 102, 96, 7, 46, 28,  88, 13}
  3. Ta xóa 96, còn lại {9, 102, 7, 46, 28,  88, 13}
  4. Ta xóa 9, còn lại {102, 7, 46, 28,  88, 13}
  5. Ta xóa 46, còn lại {102, 7, 28,  88, 13}
  6. Ta xóa 28, còn lại {102, 7, 88, 13}
  7. Ta xóa 88, còn lại {102, 7, 13}
  8. Ta xóa 13, còn lại {102, 7} cũng là đáp án.

Bây giờ từ dãy A ban đầu, ta sắp xếp các phần tử theo thứ tự tăng dần:

A = {7, 9, 10, 13, 28, 38, 46, 88, 96, 102}

Dễ dàng nhận thấy đáp án chính là 2 phần tử A[0] và A[1]. Điều mà ta cần quan tâm tiếp theo là việc xuất kết quả dựa trên thứ tự xuất hiện của 2 phần tử, nếu A[0] xuất hiện trước thì in A[0] trước, ngược lại in A[1] trước. Việc này có thể dễ dàng xử lý bằng một vòng lặp chạy từ 0 đến N, nếu gặp A[0] trước thì A[0] xuất hiện trước, ngược lại thì A[1] là phần tử xuất hiện trước.

Code mẫu (C++):

No comments:

Post a Comment

Popular posts