天天看點

遞歸求解幾類排列組合問題(六、非重複生成全子集組合排列)

六、非重複生成全子集組合排列(含重複數字時,生成不重複全子集組合排列)

對于搜尋的深度很深或深度不固定的情況,則無法用枚舉的方法來設定循環嵌套的層數,這時可以考慮用遞歸法來完成搜尋任務。遞歸是一種常用算法,它是搜尋的另一種實作方式。如果在算法設計中采用一個函數或過程直接或間接地調用它自身來解決問題的方法,則稱該方法為遞歸算法。遞歸算法必須要設計好一個或若幹個确定的遞歸終止條件。

Sample Input 

4  

1 2 2 3  

Sample Output 

12 

122 

1223 

123 

13 

22 

223 

23 

3  

注意:倘若需要輸出空集(也即輸出一個換行),可做如下修改

在函數solve()中,将if(l)puts(""); 改為puts(""); 

繼續閱讀