#include<cstdlib>
#include<iostream>
#include<vector>
using namespace std;
void print(const vector<int>& vec)
{
vector<int>::const_iterator iter = vec.begin();
for(; iter!=vec.end(); iter++)
cout << *iter << " ";
cout << endl;
}
void find_combination(int* arr, int num, vector<int>& vec)//不去重的求组合实现
{
if(num == 0)
{
print(vec);
return;
}
if(arr[0] == -1)
return;
vec.push_back(arr[0]);
find_combination(arr+1,num-1,vec);
vec.pop_back();
find_combination(arr+1,num,vec);
}
void find_combination2(int* arr,int num, vector<int>& vec)//可以去重,以-1结束。
{
if(num == 0)
{
print(vec);
return;
}
if(arr[0] == -1)
return;
vec.push_back(arr[0]);
find_combination(arr+1,num-1,vec);
vec.pop_back();
while(*arr == *(arr+1))
arr++;
find_combination(arr+1,num,vec);
}
int compare(const void* a, const void* b)
{
if(*(int*)a > *(int*)b)
return 1;
else
return *(int*)a < *(int*)b ? -1:0;
}
void combination(int* arr, int len,vector<int>& vec)
{
if(arr == NULL || len <= 0)
return;
for(int i =1; i <= len; i++ )
find_combination2(arr,i,vec);
}
int main()
{
vector<int> vec;
// int arr[] = {1,2,3,-1};
int arr[] = {4,1,1,-1};
qsort(arr,3,sizeof(int),compare);
int len = sizeof(arr) / sizeof(arr[0]);
combination(arr,len,vec);
return 0;
}数组元素的组合c++代码
原文链接: https://www.cnblogs.com/majianbin/archive/2013/05/04/3059449.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/87063
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!