码迷,mamicode.com
首页 > 编程语言 > 详细

组合算法实现

时间:2014-10-31 15:13:35      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   for   sp   strong   

用程序实现,找出从n个不同元素中,任取m(m≤n)个元素所有的组合。

需要用到下面的递推公式:

c(n,m)=c(n-1,m-1)+c(n-1,m)
 
从n个元素中选取m个元素,可以拆分成:先选取最后一个元素n,再从n-1 个元素中选取m-1 个元素,然后加上从排除n的 n-1 个元素中选取m元素。 

递归实现代码:

 1         public static void GetCombination(int source, int num, ref List<string> result, int[] temp = null)
 2         {
 3             if (temp == null)
 4             {
 5                 temp = new int[num];
 6             }
 7             if (source >= num && num >= 1)
 8             {
 9                 temp[num - 1] = source;
10 
11                 if (num == 1)
12                 {
13                     result.Add(string.Join(",", temp));
14                 }
15 
16                 GetCombination(source - 1, num - 1, ref result, temp);
17 
18                 if (source > num)
19                 {
20                     GetCombination(source - 1, num, ref result, temp);
21                 }
22 
23             }
24         }
 1  public static void GetCombination2(int source, int num, ref List<string> result, int[] temp = null)
 2         {
 3             if (temp == null)
 4             {
 5                 temp = new int[num];
 6             }
 7             for (int i = source; i >= num; i--)
 8             {
 9                 temp[num - 1] = i;
10                 if (num > 1)
11                 {
12                     GetCombination2(i - 1, num - 1, ref result, temp);
13                 }
14                 else
15                 {
16                     result.Add(string.Join(",", temp));
17                 }
18             }
19         }
1             List<string> result = new List<string>();
2             GetCombination2(5, 3, ref result);
3             foreach (var a in result)
4             {
5                 Console.WriteLine(a);
6             }

bubuko.com,布布扣

 

组合算法实现

标签:style   blog   http   io   color   ar   for   sp   strong   

原文地址:http://www.cnblogs.com/zrhai/p/4062700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!