题目链接:http://poj.org/problem?id=2245
本题属暴力搜索(递归)。
注意两个点:第一:每组测试数据后都要有空行,除非下次输入k=0。第二:输出结果时每一行的最后一个数的后面不能带有空格。
源代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
const int p=50;
int a[p],bra[p];
int rec[10];
bool mark[10];
int k,q=0;
void dfs(int dep,int t)
{
int i,j;
if(dep==7)
{
for(i=1;i<=6;i++)
{
if(i==6)
printf("%d",rec[i]);
else
printf("%d ",rec[i]);
}
puts("");
q=1;
return;
}
for(j=t;j<=k;j++,t++)
{
rec[dep]=a[j];
dfs(dep+1,t+1);
}
}
int main()
{
while(scanf("%d",&k),k)
{
if(q) puts("");
for(int i=1;i<=k;i++)
{
scanf("%d",&a[i]);
}
memset(mark,0,sizeof(mark));
dfs(1,1);
}
return 0;
}