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

C++从多n个数中选取m个数的组合

时间:2015-12-25 22:29:28      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

 1 //start 是从哪个开始取, picked代表已经取了多少个数
 2 //process和data是全局变量数组
 3 //语言说明比较难,我举个例子吧
 4 //从[ 1, 2, 3, 4 ]中选取 2 个数
 5 //然后可以依次得到
 6 //  1 2
 7 //  1 3
 8 //  1 4
 9 //  2 3
10 //  2 4
11 //  3 4
12 void combination(int start, int picked)
13 {
14      if (picked == m) {
15         for (int j = 0; j < m; j++)    //打印出来
16             cout << process[j] << "\t";
17 
18         cout << endl;
19         return ;
20     }
21 
22     int max = n - m + picked;    //选取第x个数时,最大data下标, 例如第一个数时 max = 4 - 2 + 0,
23 
24     for (int i = start; i <= max; i++) {
25         process[picked] = data[i];
26         combination(i+1, picked+1);
27     }
28 }

这方法是根据 http://blog.csdn.net/wumuzi520/article/details/8087501#comments 文章上面的方法一改编的, 觉得组合反过来不太好理解, 所以我写了个翻版。 这文章上面的方法二是个好方法。大家也可以去学一下。第一次写博客,写得不好希望大家见谅。

C++从多n个数中选取m个数的组合

标签:

原文地址:http://www.cnblogs.com/linyee/p/5077022.html

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