这个一看就是dfs,必须的,今天也要把dfs在总结一下,因为已经有3个月没看了,都忘了,之前写了个迷宫,现在可好,竟然给忘了,哎,没办法,然后今天再去看完全不懂了,然后逼我今天再做一下总结,没办法,dfs最重要的是递归,怎么递归,就是递归吗,从头开始第一项,等,然后递归时,不断加1,就行了,而输出的部分呢,也是,把每一项都给输出,还有关于每次都要递归,不是从头开始,而是一个一个递归,还有一个最重要的是,全局变量,和局部变量,今天就是这个i值,就是这次给的是全局变量,发现怎么都不是递归,一开始没找到原因,后来才发现,才知道,每次,如果是全局变量,那么每次都不能产生一个新i值仅仅只有一个i,从而不能产生递归,而重新用方法,可以产生新i每次都可以产生新的i值,因此达到递归的效果,附上代码
1
#include <stdio.h>
2 #include <stdlib.h>
3
int a[
15];
4
int n;
5
int vis[
15];
6
void dfs(
int now,
int p)
7 {
8
int i;
9
if(now ==
6)
10 {
11
for(i =
0;i <
6; i++)
12 {
13 printf(
"
%d
",vis[i]);
14
if(i <
5)
15 printf(
"
");
16 }
17 printf(
"
\n
");
18
return ;
19 }
20
21
for(i = p; i < n; i++)
22 {
23 vis[now] = a[i];
24 dfs(now+
1,i+
1);
25 }
26
27
28 }
29
int main()
30 {
31
int i;
32
while(scanf(
"
%d
", &n)!=EOF&&n!=
0)
33 {
34
for(i =
0;i < n ; i++)
35 scanf(
"
%d
",&a[i]);
36
//
for(i = 0; i < n ; i++)
37
//
printf("%d",a[i]);
38
39
40 dfs(
0,
0);
//
output, input
41
printf(
"
\n
");
42
43 }
44
return
0;
45 }
转载于:https://www.cnblogs.com/yelcoved/archive/2013/02/10/2909834.html
相关资源:数据结构—成绩单生成器