读后感:DFS解决全排列问题

2019-11-04  本文已影响0人  lucia320
原文链接

DFS解决全排列问题,从一道奥数题开始说起。http://www.jianshu.com/p/897f2a9e33cd

总结

有关全排列的题目可以通过DFS来解决。

void dfs(int step){ //step表示当前要处理的盒子
      if(step == n+1){
            //输出排列
            for(i = 1; i <= n; i++)
                  printf("%d", a[i]);
            printf("\n");
            return;
      }
      for(int i = 1; i <= n; i++){
      if(book[i] == 0){
            a[step] = i;   //将i放入第step个空位
            book[i] = 1; // i已经被使用了
            dfs(step+1); //向下调用
            book[i] = 0; // 非常重要,收回该空位中的数字才能进行下一次尝试。
      }
  }
}
void dfs(int step){
      *判断结束边界*
        尝试每一种可能 for(i = 1; i <= n; i++){
              尝试下一步 dfs(step + 1);
        }
    return; 
}

上一篇 下一篇

猜你喜欢

热点阅读