感觉自己的dfs学的很烂,正好用这道题练练,顺便再研究一下dfs的思想~
这题还有一个要注意的地方就是输出格式的问题,PE了两次~
代码:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 int f[15],a[15],b[15];
5 int n;
6 void dfs(int x,int s)
7 {
8 int i;
9 b[s]=a[x];
10 if(s==6)
11 {
12 for(i=1;i<=6;i++)
13 {
14 if(i==1)
15 printf("%d",b[i]);
16 else
17 printf(" %d",b[i]);
18 }
19 printf("\n");
20 return ;
21 }
22 for(i=x;i<=n;i++)
23 {
24 if(!f[i])
25 {
26 f[i]=1;
27 dfs(i,s+1);
28 f[i]=0;
29 }
30 }
31 }
32 int main()
33 {
34 int i;
35 scanf("%d",&n);
36 while(n)
37 {
38 for(i=1;i<=n;i++)
39 scanf("%d",&a[i]);
40 memset(f,0,sizeof(f));
41 memset(b,0,sizeof(b));
42 dfs(1,0);
43 scanf("%d",&n);
44 if(n)
45 printf("\n");
46 }
47 return 0;
48 }