Đây là cách bạn muốn tự giải quyết ví dụ đầu tiên:
Ví dụ: 9, 2, 1, 2, 2
→ Những con số có 5 chữ số trở xuống.
9, 2
9 và 2 là khác nhau, và không liên tiếp → họ đang ở vị trí khác nhau:
9****, *2***
9, 2, 1
1 có thể theo sau 9, nhưng chỉ khi chúng ở vị trí thấp nhất (un của nó):
****9, 2***0, 2***1
9****, *2***, **1**
9, 2, 1, 2
2 có thể làm theo 9 và/hoặc 1, nhưng chỉ ở vị trí thấp nhất (đơn vị); nó cũng có thể là ở vị trí tương tự như trước đó 2, nhưng không phải ở vị trí thấp nhất:
****9, 2***0, ****1, ****2
****9, 2***0, ****1, 2***2
****9, 2***0, ****1, *2**2
****9, 2****, *1***, ****2
9****, *2***, ****1, ****2
9****, *2***, **1**, *2***
9****, *2***, **1**, ***2*
9, 2, 1, 2, 2
2 có thể là trong cùng một vị trí như một hoặc cả hai của 2 nhân trước đó, nhưng không phải ở vị trí thấp nhất (đơn vị):
****9, 2***0, ****1, ****2, 2***3 min. 2 digits 19, 20, 21, 22, 23
****9, 2***0, ****1, ****2, *2**3 min. 3 digits
****9, 2***0, ****1, 2***2, 2***3 min. 2 digits 19, 20, 21, 22, 23
****9, 2***0, ****1, 2***2, *2**3 min. 3 digits
****9, 2***0, ****1, *2**2, 2***3 min. 3 digits
****9, 2***0, ****1, *2***, **2*3 min. 4 digits
****9, 2***0, *1**1, ****2, 2***3 min. 3 digits
****9, 2***0, *1**1, ****2, **2*3 min. 4 digits
9****, *2***, ****1, ****2, *2**3 min. 3 digits
9****, *2***, ****1, ****2, **2*3 min. 4 digits
9****, *2***, **1**, *2***, *2*** min. 3 digits
9****, *2***, **1**, *2***, ***2* min. 4 digits
9****, *2***, **1**, ***2*, *2*** min. 4 digits
9****, *2***, **1**, ***2*, ****2 min. 5 digits
Chìa khóa để hạn chế số lượng khả năng cố gắng là tất nhiên để theo dõi đầy hứa hẹn nhất (tức là số thấp nhất của chữ số) đường dẫn đầu tiên, như chúng ta sẽ làm cho ví dụ thứ hai:
Ví dụ: 9, 8, 9, 1, 0
→ Những con số có 5 chữ số trở xuống.
9, 8
8 chỉ có thể là ở một vị trí khác nhau từ 9:
9****, *8*** min. 2 digits
9, 8, 9
9 có thể ở vị trí tương tự (không thấp nhất) là 9, hoặc cùng vị trí (thấp nhất) là 8:
9****, 98***, 9**** min. 2 digits
9***7, ****8, ****9 min. 2 digits
9, 8, 9, 1
1 không thể ở vị trí giống như bất kỳ các chữ số khác:
9****, 98***, 9****, **1** min. 3 digits
9***7, ****8, ****9, *1**0 min. 3 digits
9, 8, 9 , 1, 0
0 có thể đến sau một hoặc cả hai 9, nhưng không ở vị trí thấp nhất:
9****, 98***, 9****, **1**, 0**** min. 3 digits 97, 98, 99, 100, 101
9***7, ****8, ****9, *1**0, 0***1 min. 3 digits 97, 98, 99, 100, 101
Vì vậy, một thuật toán có thể sẽ là:
- Đối với mỗi chữ số mới, kiểm tra xem nó có thể làm theo bất kỳ các chữ số trước, và trong đó các vị trí (1 → 2 có thể xảy ra ở mọi vị trí, nhưng 1 3 hoặc 1 → x → x → 4 chỉ ở vị trí thấp nhất; 1 → 1 có thể xảy ra ở bất kỳ vị trí nào nhưng vị trí thấp nhất).
- Kiểm tra các đường dẫn hứa hẹn nhất trước tiên, ví dụ: nếu một chữ số mới có thể ở cùng vị trí với chữ số trước đó.
- Nếu chữ số mới không thể theo bất kỳ chữ số nào trước đó, thì chỉ xem xét vị trí bổ sung (tức là số chữ số tối thiểu trong giải pháp tăng).
- Nếu bạn chỉ tìm thấy các giải pháp lớn, quay lại và chọn một con đường có vẻ ít hứa hẹn hơn vào thời điểm đó.
Tôi không chắc chắn làm thế nào bạn có thể biết rằng giải pháp nhỏ nhất đã được tìm thấy khi bạn bắt đầu quay lại. Nếu bạn tìm thấy giải pháp có số n, thì có thể bạn nên kiểm tra tất cả các giải pháp có số n để chắc chắn.
bạn có thể làm rõ câu hỏi của mình bằng các ví dụ khác không? Đây có phải là điều bạn muốn tìm không? được đưa ra (1, 3, 10, 4) sẽ trở lại (10,13,100,14)? – Persiden
No. Một danh sách các số nguyên K * liên tiếp được ghi lại. Sau đó, một chữ số được lấy từ mỗi số (bất kỳ chữ số nào của nó). Sau đó, các chữ số được đưa ra theo cùng thứ tự của số gốc của chúng. Ví dụ: nếu đưa ra 9 8 9 1 0 thì trình tự như vậy sẽ là 97 98 99 100 101. Xem tha bạn có thể tìm thấy các chữ số đó trong chuỗi đã cho theo số tương ứng trong chuỗi này. – Artur
Tôi đã chỉnh sửa câu hỏi. – Artur