利用遞迴巧妙實現組合
阿新 • • 發佈:2019-01-29
http://www.cnblogs.com/heyonggang/p/3642455.html 借鑑了該部落格中的
輸入兩個整數 n 和 m,從數列1,2,3.......n 中 隨意取幾個數,使其和等於 m ,要求將其中所有的可能組合列出來</span></span>
list<char>list1; void combine(char *str,int m, int len,int n) { // 遞迴出口 if(m==len+1) return; // 輸出找到的結果 if(0 == n) { for(list<char>::iterator iter = list1.begin(); iter != list1.end(); iter++) {cout << *iter ;} cout<<"\n"; return; } list1.push_back(str[m]); combine(str,m+1,len,n-1); //放第m個字元 list1.pop_back(); combine(str, m+1,len,n); //不放第m個字元 } int main() { char str[]="abcd"; combine(str,0,4,2); return 0; }