poj2245

it2022-05-09  20

这个一看就是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

相关资源:数据结构—成绩单生成器

最新回复(0)