Tôi có một quầy. Đây là một thiết bị nhỏ trông như thế này:
Màn hình hiển thị từ 0000
đến 9999
. Nó có một nút ấn nhỏ ở phía trên làm tăng số đếm lên 1 và một núm nhỏ ở bên phải có mục đích đặt lại bộ đếm trở về 0.
Bây giờ, điều về núm nhỏ là nếu bạn xoay ngược lại, bạn có thể làm cho nó tăng bất kỳ chữ số nào bạn muốn một khi bạn xoay nó về phía trước một lần nữa. Vì vậy, nếu tôi nhấn nút bộ đếm 10 lần để bộ đếm hiển thị 0010
, sau đó tôi có thể xoay núm về phía sau cho đến khi tôi nghe thấy một tiếng click nhỏ, sau đó xoay nó về phía trước một lần nữa và làm cho nó đi thẳng vào 0090
.
Nhưng, núm sẽ luôn tăng tất cả các lần xuất hiện của cùng một chữ số mỗi lần nó đẩy số về phía trước. Vì vậy, nếu bộ đếm hiển thị 6060
, bạn chỉ có thể làm cho nó tăng lên 7070
, không 6070
hoặc 7060
. Ngoài ra, núm sẽ cuộn 9
qua 0
mà không mang theo, vì vậy 0990
sẽ tiến tới0000
thay vì 1000
hoặc 1100
.
Tôi muốn biết cách hiệu quả nhất để đặt bộ đếm thành một số nhất định. Nhiệm vụ của bạn là viết một chương trình hoặc chức năng sẽ xác định chuỗi lần nhấn nút ngắn nhất và các tiến bộ núm cần thiết để thực hiện.
Chương trình của bạn sẽ mất như là đầu vào một số 4 chữ số từ 0000
đến 9999
, và trả về một loạt các bước trong các định dạng sau:
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
Chữ C
viết tắt của "nhấn nút truy cập" và bất kỳ chữ số nàoD
từ 0 đến 9 là viết tắt của "sử dụng núm xoay để tiến tất cả các lần xuất hiện của D
1".
Chương trình của bạn phải tạo một chuỗi các bước hợp lệ cho tất cả các kết hợp bốn chữ số có thể và sẽ được ghi bằng tổng số bước cần thiết cho tất cả 10.000 trường hợp. Trong trường hợp hòa (rất có thể khi tìm thấy thuật toán tối ưu), mã ngắn hơn sẽ giành chiến thắng.
0010
thành0020
trong trường hợp đó? Hoặc bạn chỉ có thể xoay núm về phía sau? Ngoài ra, mỗi "D" có được tính là "D" số lần tiến bộ của núm (chẳng hạn, có1234567
nghĩa là xoay núm 1 lần, sau đó 2 lần, sau đó 3 lần, v.v.) không? Hoặc nó chỉ biểu thị cho mỗi lần xoay núm riêng biệt (ví dụ,1234567
chỉ có nghĩa là xoay núm 7 lần)?