其实就是求所有元素个数为6的所以集合,字典序输出, 我剪枝都没加就直接过了,真可谓水得可以。
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N = 13;
int n, arr[N];
int num[7];
void dfs(int j,int k)
{
if(j > 6)
{
for(int i=1; i<6; ++i)
printf("%d ",arr[num[i]]);
printf("%d\n",arr[num[6]]);
return;
}
if(k>n)
return;
for(int i=k; i<=n; ++i)
{
num[j] = i;
dfs(j+1,i+1);
}
}
int main(void)
{
while(scanf("%d",&n),n)
{
for(int i = 1; i <= n; ++ i)
scanf("%d",arr+i);
dfs(1,1);
putchar(10);
}
return 0;
}