01/10/2018, 01:00

Thuật toán sinh tập con của một chuỗi các thuộc tính!

Chào các sư huynh/ sư tỷ!
Em đang nghiêng cứu về thuật toán sinh tập con của một chuỗi các ký tự cho trước!
VD: nhập ABCD sẽ sinh 15 tập con(2^4=16-1(tập rỗng)=15): A, B, C, D, AB, AC, AD, BC, BD, CD, ABC…
Ý tưởng của em là sẽ dùng con trỏ duyệt từng ký tự, sử dụng lệnh rẽ nhánh để thực hiện, nhưng khá rắt rối. Anh em nào đã làm rồi, hoặc có ý tưởng nào hay chỉ bảo em với cái ạ!
Đó là ví dụ có 4 thuộc tính thôi, còn nếu người dùng nhập hơn 4 thì hơi mệt nên em muốn viết một cái ứng dụng tự sinh tập con, cho đỡ tốn time.
Em xin chân thành cảm ơn!

Quoc Tran viết 03:08 ngày 01/10/2018

sinh 2^4 -1 dãy nhị phân
dùng đệ qui
mỗi bit 0,1 tương ứng với được chọn hay ko được
vd: ABCD
với dãy 0001 sẽ có D
loại bõ dãy 0000 ra

Minh Hoàng viết 03:03 ngày 01/10/2018

Dùng đệ quy nhé bạn.

Huynh Nguyen viết 03:08 ngày 01/10/2018

Thanks ý kiến của hai bác nhé! Em sẽ nghiêng cứu dùng đệ quy xem sao, theo như em biết từ một số nguồn thì ngoài đệ quy còn có thuật toán cộng 1 và mã Gray nữa! Hy cọng có bác nào đã làm rồi cho em xin ý kiến luôn ạ!

Nguyễn Xuân Phúc viết 03:06 ngày 01/10/2018

mã Gray chính là cách của @QUOC_TRAN nói đó. Mã hóa từng bit đại diện cho kí tự tương ứng, thì 1/0 sẽ tượng trưng cho việc nó có/không xuất hiện trong subset.

Bài liên quan
0