求从n个数组任意选取一个元素的所有组合
2014-12-21 20:40
423 查看
#include<iostream> #include <vector> #include <algorithm> usingnamespace std; void get_result_in_vector(vector<vector<int>>& vec,int N,vector<int>&tmp, vector<vector<int>>& tmp_result) { for(int i =0;i<vec .size();++i) { tmp.push_back(vec [i]); if (N<vec.size()-1) { get_result_in_vector(vec,N+1,tmp, tmp_result); } else { vector<int> one_result; for (int i =0;i<tmp.size();++i) { one_result.push_back(tmp.at(i)); } tmp_result.push_back(one_result); } tmp.pop_back(); } } void get_all_combination(vector<vector<int>>& vec, int result[][3]) { vector<int> tmp_vec; vector<vector<int>> tmp_result; get_result_in_vector(vec,0,tmp_vec, tmp_result); //将vector中的数据转化为数组保存 for (int i=0; i< tmp_result.size(); i++) { for (int j =0; j< tmp_result.at(i).size(); j++) { result[i][j] = tmp_result.at(i).at(j); } } } int main() { int arr1[]= {1,3,4}; int arr2[]= {2,5}; int arr3[]= {6,7}; constint first_dimension=sizeof(arr1)/sizeof(arr1[0])*sizeof(arr2)/sizeof(arr2[0])*sizeof(arr3)/sizeof(arr3[0]); //所有组合的结果 int result[first_dimension][3]; vector<vector<int>> vec; vec.push_back(vector<int>(arr1,arr1+sizeof(arr1)/sizeof(arr1[0]))); vec.push_back(vector<int>(arr2,arr2+sizeof(arr2)/sizeof(arr2[0]))); vec.push_back(vector<int>(arr3,arr3+sizeof(arr3)/sizeof(arr3[0]))); get_all_combination(vec, result); //输出结果 for (int i=0; i< first_dimension; i++) { for (int j =0; j<3; j++) { cout<<result[i][j]<<"\t"; } cout<<endl; } return0; }
转载自 http://www.cnblogs.com/shuaiwhu/archive/2011/06/15/2081552.html
相关文章推荐
- 求从n个数组任意选取一个元素的所有组合
- 求从n个数组任意选取一个元素的所有组合
- 从n个数组中任意选取一个元素的所有组合的Java实现(组合问题)
- 算法题:求从n个数组任意选取一个元素的所有组合
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法
- 用JAVA编写一个算法实现对一个字符数组的所有元素的所有组合
- 给定一个正整数数组,找所有元素组合起来最大的值(答案)
- 从长度为n的数组中(元素互不相同)任意选择m个数的所有组合
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- MATLAB选出一个数组里n个元素的所有组合
- 给定一个数组,求数组中所有元素的可能组合(每个元素只出现一次),使其和等于给定数的解决办法
- 设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 排列组合-打印出一个数组的元素的所有排列方式-算法
- 面试题———关于将一个整型数组中的所有元素组合成一个数字,并找出最小一个。
- 找出一个字符数组(元素不重复)所有可能字符的组合
- List的All方法使用问题:我用List1的All方法来确保List1的所有每个数组元素中是否包含Arr1中的任意元素,这个部分很难实现。 因为,没有一个数组中是否包含另一个数组中的任意元素这个功能
- 将一个数组内元素的所有组合输出
- [面试题]设计一个算法找到数组中两个元素相加等于指定数的所有组合
- 计算一个数组所有元素之和(方法总结)
- 将任意类型数组中的所有元素填充为相应类型的对象(题目很长,其实代码很短)