天天看點

每日一小練——列出所有子集

上得廳堂,下得廚房,寫得代碼,翻得圍牆,歡迎來到睿不可擋的每日一小練!

題目:列出所有子集

内容:寫一個程式,列出{1,2,3,4,...,n}這個集合的所有子集,包括空集{ }。

解決這個問題的算法應該有很多種,不過我發現了一種很簡單也很好玩的方法,就是用二進制表示幾何元素的方法

比如如果n是3,則子集有(不包括空集){1}{2}{3}{1,2}{1,3}{2,3}{1,2,3}就是1*{0,1}and2*{0,1}and3{0,1}每個組合出現一次,是以也可以看成是{0,0,1}{0,1,0}{0,1,1}{1,0,0}{1,0,1}{1,1,0}{1,1,1}是以就可以看成是二進制不斷加一。

我的解法:上來沒多想,打開vs2013就敲了起來,問題果然很簡單,分分鐘就超神。。奧,不對就解決了!

實驗結果:

每日一小練——列出所有子集

最後感謝 @daiweifeng 同學在  《快速Fibonacci數算法》中給我的提示。

歡迎大家加入每日一小練,嘿嘿!

每天練一練,日久見功夫,加油!

            -End-

參考文獻:《c語言名題精選百則》

繼續閱讀