数组中数字的所有组合情况
2015-03-05 13:34
169 查看
#include <queue> #include <vector> #include <iostream> using namespace std; // 列出数字的所有组合情况 // 使用树的层次遍历 void Combination(int arr[], int len) { if(arr == NULL || len <= 0) { return; } queue<vector<int> > q; // 第一层节点入队列 for(int i = 0; i < len; ++i) { vector<int> v; v.push_back(i); q.push(v); } while(!q.empty()) { // 取出队头元素 const vector<int>& v = q.front(); // 将队头元素的子节点入队 for(int i = v.back() + 1; i < len; ++i) { vector<int> vChild(v); vChild.push_back(i); q.push(vChild); } // 打印队头节点 if(!v.empty()) { cout << "["; for(int i = 0; i < v.size(); ++i) { if(i > 0) { cout << ','; } cout << arr[v[i]]; } cout << "]" << endl; } // 队头节点出队 q.pop(); } } int main(int argc, char* argv[]) { int arr[] = {1, 2, 3}; Combination(arr, sizeof(arr) / sizeof(int)); return 0; }
运行结果:
[1]
[2]
[3]
[1,2]
[1,3]
[2,3]
[1,2,3]
相关文章推荐
- n个数字选出m个求出所有的组合情况
- 面试题———关于将一个整型数组中的所有元素组合成一个数字,并找出最小一个。
- 回溯法——subsets、subsets-ii数字数组的所有组合 4000
- 一道Amazon经典的题目,经常会考到,给一个target数字以及一个数组,求所有的加起来为这个数字的组合
- 输出N个数中取M个数的所有组合,排列情况
- 排列组合-打印出一个数组的元素的所有排列方式-算法
- [sprc_lcl(cool一生) ]先生的一段代码:从n个数字中取m个数的所有组合
- 算一个数组的所有组合方式
- 找出数组中满足条件的所有组合!
- m个数字任选n个数组进行组合
- 阿里巴巴笔试题--求数组中和为给定数所有的组合
- 从1到10的数中取出3个数的所有组合情况
- 求和为指定数字的所有组合
- 从数组中取出n个元素的所有组合(递归实现)
- 从n个数组中任意选取一个元素的所有组合的Java实现(组合问题)
- 试题:找出数组中元素和为指定值的所有组合
- java实现数组的所有组合
- 求从n个数组任意选取一个元素的所有组合
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法