blob: 6d0566615fb961d59c42cc6dacb3ed1a1d7a2001 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
int n;
int a[10];
int v[10];
void DFS(int p)
{
int i=0;
if(p==n){//边界
putarray(n, a);
putch(10);
return;
}
while (i<n) { //枚举0->n-1(实际是1->n)这些数 v[i]标志这个数是否被访问过
if(v[i]==1) {
i = i+1;
continue;
}
v[i]=1;
a[p]=i;//p代表位置 每次给一个位置找值
DFS(p+1);
v[i]=0;//回溯
i = i+1;
}
}
int main()
{
int i;
while(1){
n = getint();
if(n==0) {
break;
}
i=0;
while (i<10){
v[i]=0;
i=i+1;
}
DFS(0);
}
return 0;
}
|