30/09/2018, 18:21
Tìm số các số có k chữ số chỉ gồm 4 chữ số trên, sao cho tổng các chữ số là N
Mình đang có bài tập mà chưa biết cách giải mong các bạn giúp
Cho tập gồm 4 chữ số 0, 1, 2, 5. Với hai số k và N cho trước, hãy tìm số các số có k chữ số chỉ gồm 4 chữ số trên, sao cho tổng các chữ số là N.
Ví dụ, với k=3 và N=5, danh sách các số là: 500, 221, 212, 122. Như vậy có tất cả 4 số.
Lập trình giải bài toán bằng sử dụng Stack hay Queue.
Bài liên quan
Để tránh topic này trở thành topic hỏi bai tập thì @John_Smith đưa ra một vài ý tưởng xem, hoặc dự đoán sẽ làm thế nào để mọi người hướng dẫn dễ hơn hoặc bắt đầu hỏi bằng những vấn đề nhỏ của bài toán, thay vì hỏi toàn bộ bài tập
Hiện tại e đã làm được bài toán bằng cách vét cạn. Nhưng chưa biết làm sao để làm bằng stack
Code vét cạn của e
Có lẽ dùng stack hơi khó với bài này, dùng Queue với thuật toán loang:
bạn sẽ gọi hàm
gen(i, x) tức là gen chữ số thứ i, với tổng là x (gần giống quy hoạch động). Thì gen(i, x) sẽ gọi gen(i - 1, x - digit) với digit = {0, 1, 2, 5}. Độ phức tạp là O(N*k)