组合问题(从M个不同字符中任取N个字符的所有组合)

来源:互联网 发布:js 大屏幕 倒计时特效 编辑:程序博客网 时间:2024/05/16 07:36
递归代码:原理见链接http://blog.csdn.net/huazhongkejidaxuezpp/article/details/20397117
  1. void Combination(char *string ,int number,vector<char> &result);  
  2. void Com(char *string,int N)  
  3. {  
  4.     assert(string != NULL);  
  5.     vector<char> result;  
  6.     int i , length = strlen(string);  
  7.         Combination(string ,N,result);  
  8. }  

1.     }  

2.       

3.     void Combination(char *string ,int number , vector<char> &result)  

4.     {  

5.         assert(string != NULL);  

6.         if(number == 0)  

7.         {  

8.             static int num = 1;  

9.             printf("%d个组合\t",num++);  

10.     

11.           vector<char>::iterator iter = result.begin();  

12.           for( ; iter != result.end() ; ++iter)  

13.               printf("%c",*iter);  

14.           printf("\n");  

15.           return ;  

16.       }  

17.       if(*string == '\0')  

18.           return ;  

19.       result.push_back(*string);  

20.       Combination(string + 1 , number - 1 , result);  

21.       result.pop_back();  

22.       Combination(string + 1 , number , result);  

23.   }  

24.     

25.   int main(void)  

26.   {  

27.       char str[] = "abc";  

28.         int N=2;

29.       Com(str,N);  

30.       return 0;  

31.   }  

0 0
原创粉丝点击