2/10 BFS初探

其实在我看来解决全排列问题,核心还是顺序,想清楚结束条件,然后输出,以n=3为例

#include<iostream>
using namespace std;
const int N = 10;
int path[N];//保存序列
int state[N];//数字是否被用过
int n;
void dfs(int u)
{
    if(u > n)//数字填完了,输出
    {
        for(int i = 1; i <= n; i++)//输出方案
            cout << path[i] << " ";
        cout << endl;
    }

    for(int i = 1; i <= n; i++)//空位上可以选择的数字为:1 ~ n
    {
        if(!state[i])//如果数字 i 没有被用过
        {
            path[u] = i;//放入空位
            state[i] = 1;//数字被用,修改状态
            dfs(u + 1);//填下一个位
            state[i] = 0;//回溯,取出 i
        }
    }
}

int main()
{

    cin >> n;
    dfs(1);
}

用 path 数组保存排列,当排列的长度为 n 时,是一种方案,输出。
用 state 数组表示数字是否用过。当 state[i] 为 1 时:i 已经被用过,state[i] 为 0 时,i 没有被用过。
dfs(i) 表示的含义是:在 path[i] 处填写数字,然后递归的在下一个位置填写数字。
回溯:第 i 个位置填写某个数字的所有情况都遍历后, 第 i 个位置填写下一个数字。
 

相关推荐

  1. 【宽度优先搜索 BFS】LeetCode-200. 岛屿数量

    2024-02-11 12:32:01       41 阅读
  2. leetcode热题HOT 200. 岛屿数量(深入理解DFS和BFS)

    2024-02-11 12:32:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-11 12:32:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-11 12:32:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-11 12:32:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-11 12:32:01       20 阅读

热门阅读

  1. Shell之sed

    2024-02-11 12:32:01       33 阅读
  2. 【算法】【数据结构】算法与数据结构的关系

    2024-02-11 12:32:01       33 阅读
  3. mysql

    mysql

    2024-02-11 12:32:01      29 阅读
  4. Nginx配置php留档

    2024-02-11 12:32:01       28 阅读
  5. RuoYi模块功能分析:第八章定时任务

    2024-02-11 12:32:01       26 阅读
  6. P2036 [COCI2008-2009 #2] PERKET题解

    2024-02-11 12:32:01       28 阅读
  7. 学习数据结构和算法的第6天

    2024-02-11 12:32:01       28 阅读
  8. 设计模式-适配器模式 Adapter

    2024-02-11 12:32:01       28 阅读
  9. 应急响应-挖矿木马-常规处置方法

    2024-02-11 12:32:01       27 阅读
  10. 面试心得--面试前应该如何准备

    2024-02-11 12:32:01       21 阅读
  11. 用Python实现刘谦春晚魔术

    2024-02-11 12:32:01       30 阅读