标签:
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 文章上面的方法一改编的, 觉得组合反过来不太好理解, 所以我写了个翻版。 这文章上面的方法二是个好方法。大家也可以去学一下。第一次写博客,写得不好希望大家见谅。
标签:
原文地址:http://www.cnblogs.com/linyee/p/5077022.html