Tutorial — Optimal Digit Alignment Spread

Về đề bài

Gợi ý

1 Hint 1
Ta nhận thấy giới hạn số lượng chữ số $k$ rất nhỏ khi thỏa mãn $k \le 8$. Số lượng quy tắc hoán đổi vị trí khả dĩ chỉ bằng số lượng hoán vị của tập hợp gồm $k$ phần tử.
2 Hint 2
Với mỗi quy tắc hoán đổi được biểu diễn bằng một hoán vị các chỉ số từ $0$ đến $k - 1$, mỗi bản ghi số liệu sẽ biến đổi thành một giá trị nguyên xác định. Khi một hoán vị được cố định, ta có thể trực tiếp xác định giá trị lớn nhất, giá trị nhỏ nhất và tính độ chênh lệch giữa chúng trong thời gian tỉ lệ thuận với $n \cdot k$.
3 Hint 3
Áp dụng thuật toán tìm kiếm vét cạn bằng cách sinh toàn bộ $k!$ hoán vị thông qua hàm `std::next_permutation` hoặc đệ quy quay lui. Với mỗi hoán vị, ta duyệt qua $n$ bản ghi để cập nhật giá trị chênh lệch và lấy giá trị chênh lệch nhỏ nhất trên toàn bộ các hoán vị.

Lời giải

Xem lời giải chi tiết (spoiler!)
Đang tải…