这个题和素数环那个题目还是很像的,由于格式错误,还是没有一A。。。。比较容易理解,就不多说了
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
const int maxn=20;
int vis[maxn];
int str[maxn];
int ss[maxn];
void DFS(int cnt)
{
if(cnt==6)
{
for(int i=0;i<6;i++)
{
if(i==0) printf("%d",ss[i]);
else printf(" %d",ss[i]);
}
printf("\n");
}
for(int i=0;i<n;i++)
{
if(!vis[i]&&ss[cnt-1]<str[i])
{
ss[cnt++]=str[i];
vis[i]=1;
DFS(cnt);
vis[i]=0;
cnt--;
}
}
}
int main()
{
int kase=0;
while(cin>>n)
{
if(n==0) break;
if(kase)
{
cout<<endl;
}
kase++;
memset(vis,0,sizeof(vis));
memset(str,0,sizeof(str));
memset(ss,0,sizeof(ss));
for(int i=0;i<n;i++)
scanf("%d",&str[i]);
for(int i=0;i<n;i++)
{
if(n-i>=6)
{
ss[0]=str[i];
int cnt=1;
vis[i]=1;
DFS(cnt);
vis[i]=0;
}
}
}
return 0;
}