求出从数组a中取出n个元素的所有组合
#include<iostream>
using namespace std;
int a[10];
//按索引从小到大
//这里的start是数组头部a[0]的下标0
void DFS1(int a[], int start, int a_len, int result[], int count, int num)
{
for (int i = start; i < a_len + 1 - count; ++i) //i为数组a的某个索引
{
result[count - 1] = i; //储存索引
if (count == 1)
{
for (int j = num - 1; j >= 0; j--)
{
cout << a[result[j]] << " ";
}
cout << endl;
}
else DFS1(a, i + 1, a_len, result, count - 1, num);
}
}
//按索引从大到小
//这里的start是数组尾部a[n-1]的下标n-1
void DFS2(int a[], int start, int result[], int count, int num)//i为数组a的某个索引
{
for (int i = start; i >= count-1; i--)
{
result[count - 1] = i; //储存索引
if (count == 1)
{
for (int j = num - 1; j >= 0; j--)
{
cout << a[result[j]] << " ";
}
cout << endl;
}
else DFS2(a, i - 1, result, count - 1, num);
}
}
int main()
{
freopen("input.txt", "r", stdin);
int result[6];
for (int i = 0; i < 10; ++i) cin >> a[i];
DFS1(a, 0, 10, result, 6, 6);
cout << endl << endl;
DFS2(a, 9, result, 6, 6);
return 0;
}