Dùng đệ quy để in ra tất cả các số có N = 3 chữ số và có tổng S = 4, ví dụ: 112, 400, 121, 211, 013, 310…
Câu đố Đệ quy hay: Dùng đệ quy để in ra tất cả các số có N = 3 chữ số và có tổng S = 4
013 cũng tính là số có 3 chữ số ạ?
tính hết luôn nhé…
1 Like
Không dùng đệ quy,1 chút kiến thức về tổ hợp:
for w in itertools.combinations(range(6),2):
x,y,z=w[0],w[1]-w[0]-1,6-w[1]-1
print(x,y,z)
#ouput
0 0 4
0 1 3
0 2 2
0 3 1
0 4 0
1 0 3
1 1 2
1 2 1
1 3 0
2 0 2
2 1 1
2 2 0
3 0 1
3 1 0
4 0 0
3 Likes
Cái này có gọi là đệ quy không ta 
C#
void DeQuyKhongHay(System.Collections.Generic.List<uint> Outer, uint Input)
{
if (Input > 999)
return;
if (Input / 100 + (Input % 100) / 10 + Input % 10 == 4)
Outer.Add(Input);
DeQuyKhongHay(Outer, Input + 1);
}
Và khi chạy hàm thì lưu vào một biến Output kiểu List, tuỳ theo môi trường mà in ra kiểu gì:
var Output = new System.Collections.Generic.List<uint>();
DeQuyKhongHay(Output, 0);
Bác giải thích thêm code đc k? e đọc k hiểu sao lại w1-w0 hay 6-1-w1 cả, công thức ấy gọi là gì bác?
- Xem mỗi đơn vị là
@, do tổng các chữ số là 4 nên sẽ có@@@@ - có 3 chữ số nên sẽ có 2
|ngăn thành phần biểu diễn giữa các đơn vị@|@@|@biểu diễn số 121 - các tổ hợp của [0->5] chọn 2 phần tử chính là chọn vị trị
|ở giữa những số đó -
w[0], w[1]-w[0]-1, 6-1-w[1]là số@ở giữa các|phân chia các đơn vịhang chuc,hang tram,hang don vi, từ đó ta có thể sinh ra tất cả các số theo yêu cầu của đề bài
3 Likes

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?