欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度优先搜索

程序员文章站 2022-05-23 19:32:54
...
#include<stdio.h>
int a[10],book[10],n;//全局变量默认为0 
void dfs(int step)
{
  int i;
  if(step==n+1)                          
  {
    for(i=1;i<=n;i++)
      printf("%d",a[i]);
    printf("\n");
    return;  
  }
  for(i=1;i<=n;i++)//n=2 i=1      i=2     i=2
  {
    if(book[i]==0)
    {
      a[step]=i;    //a[1]=1   a[2]=2     a[]
      book[i]=i;
      
      dfs(step+1); //
      book[i]=0;//收回的i是多少 ?     book[2]=0 book[1]=0
    }           //在第n次调用中结束并收回n 跳出递归后再收回n-1 
  }
  return;
 } 
int main()
{
  scanf("%d",&n);
  dfs(1);
  
}
//深度优先搜索,类似贪心,关键在于  解决当下如何去做  而下一步的做法与
//上一步相同