Vấn đề
Hãy tưởng tượng 7 thùng xếp thành một hàng. Mỗi thùng có thể chứa tối đa 2 quả táo. Có 13 quả táo được dán nhãn từ 1 đến 13. Chúng được phân phối trong số 7 thùng. Ví dụ,
{5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1}
Trong đó 0 đại diện cho không gian trống. Thứ tự mà táo xuất hiện trong mỗi thùng không liên quan (ví dụ: {5,4} tương đương với {4,5}).
Bạn có thể di chuyển bất kỳ quả táo nào từ một thùng sang một thùng liền kề, miễn là có chỗ trong thùng đích cho một quả táo khác. Mỗi di chuyển được mô tả bằng số táo bạn muốn di chuyển (không rõ ràng vì chỉ có một khoảng trống). Ví dụ: áp dụng di chuyển
7
để sắp xếp ở trên sẽ dẫn đến
{5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1}
Mục tiêu
Viết chương trình đọc một sắp xếp từ STDIN và sắp xếp nó vào sắp xếp sau
{1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0}
sử dụng càng ít di chuyển càng tốt. Một lần nữa, thứ tự mà táo xuất hiện trong mỗi thùng không liên quan. Thứ tự của các thùng không thành vấn đề. Nó sẽ xuất ra các di chuyển được sử dụng để sắp xếp từng sắp xếp được phân tách bằng dấu phẩy. Ví dụ,
13, 7, 6, ...
Điểm của bạn bằng tổng số lần di chuyển cần thiết để giải quyết các sắp xếp sau:
{8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, 5}
{3, 1}, {6, 9}, {7, 8}, {2, 11}, {10, 5}, {13, 4}, {12, 0}
{0, 2}, {4, 13}, {1, 10}, {11, 6}, {7, 12}, {8, 5}, {9, 3}
{6, 9}, {2, 10}, {7, 4}, {1, 8}, {12, 0}, {5, 11}, {3, 13}
{4, 5}, {10, 3}, {6, 9}, {8, 13}, {0, 2}, {1, 7}, {12, 11}
{4, 2}, {10, 5}, {0, 7}, {9, 8}, {3, 13}, {1, 11}, {6, 12}
{9, 3}, {5, 4}, {0, 6}, {1, 7}, {12, 11}, {10, 2}, {8, 13}
{3, 4}, {10, 9}, {8, 12}, {2, 6}, {5, 1}, {11, 13}, {7, 0}
{10, 0}, {12, 2}, {3, 5}, {9, 11}, {1, 13}, {4, 8}, {7, 6}
{6, 1}, {3, 5}, {11, 12}, {2, 10}, {7, 4}, {13, 8}, {0, 9}
Vâng, mỗi cách sắp xếp này có một giải pháp.
Quy tắc
- Giải pháp của bạn phải chạy trong thời gian đa thức về số lượng xô mỗi lần di chuyển. Vấn đề là sử dụng phương pháp phỏng đoán thông minh.
- Tất cả các thuật toán phải được xác định.
- Trong trường hợp hòa, số byte ngắn nhất sẽ thắng.