#include <stdio.h>
#include <cstring>int n;
int list[50];
bool mark[50];
int ans[6];void print()
{
bool flag = false;
for(int i = 0; i < 5; i++) //判断是否是升序排列的
if(ans[i] > ans[i+1])
flag = true;
if(flag)
return;
for(int i = 0; i < 6; i++)
{
if(i == 0)
printf("%d", ans[i]);
else
printf(" %d", ans[i]);
}
printf("\n");
}void DFS(int x)
{
if(x >= 6)
{
print();
return;
}
for(int i = 0; i < n; i++)
{
if(mark[i] == false)
{
ans[x] = list[i];
mark[i] = true;
DFS(x+1);
mark[i] = false;
}
}
}int main()
{
bool flag = false;
while(~scanf("%d", &n) && n!= 0)
{
if(flag) //标记书否输出换行 ,第一次不输出,以后都输出
printf("\n");
for(int i = 0; i < n; i++)
scanf("%d", &list[i]);
memset(mark, 0, sizeof(mark));
DFS(0);
flag = true;
}
return 0;
}
Lotto HDU - 1342(DFS)
最新推荐文章于 2019-02-06 21:46:44 发布