#include <iostream>
using namespace std;
void perm(int a[], int n, int m, int out[], int k, int used[])
{
if(k == m)
{
for(int i = 0; i < m; i++)
{
cout << out[i] << " ";
}
cout << endl;
}
for(int i = 0; i < n; i++)
{
if(used[i] == 0)
{
used[i] = 1;
out[k] = a[i];
perm(a, n, m, out, k+1, used);
used[i] = 0;
}
}
}
void combine(int a[], int n, int m, int out[], int k, int used[], int startpos)
{
if(k == m)
{
for(int i = 0; i < m; i++)
{
cout << out[i] << " ";
}
cout << endl;
}
for(int i = startpos; i <= startpos+(n-m); i++) //
{
if(used[i] == 0)
{
used[i] = 1;
out[k] = a[i];
combine(a, n, m, out, k+1, used, startpos+1);
used[i] = 0;
}
}
}
int main()
{
int a[] = {1,2,3,4};
int used[5] = {0};
int out[5] = {0};
//perm(a, sizeof(a)/sizeof(int), 3, out, 0, used);
combine(a, sizeof(a)/sizeof(int), 3, out, 0, used, 0);
return 0;
}
排列与组合
最新推荐文章于 2022-11-21 15:56:26 发布