全排列问题DFS实现执行示意图

【全排列问题DFS实现执行示意图】

【示意图依托的核心代码】

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
 
const int maxn=12;
int a[maxn],st[maxn];
int n;
 
//确定第pos位及后续位置的值
void dfs(int pos) {
    if(pos==n+1) {
        for(int i=1; i<=n; i++) {
            printf("%5d",a[i]);
        }
        printf("\n");
        return;
    }
 
    //枚举所有数字,尝试为当前位置pos选择一个可用值
    for(int i=1; i<=n; i++) {
        if(st[i]==0) {
            a[pos]=i;
            st[i]=1;
            dfs(pos+1);
            st[i]=0; //撒销选择
        }
    }
}
 
int main() {
    scanf("%d",&n);
    dfs(1);
    return 0;
}
 
/*
in:
3

out:
    1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1
*/

【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/148295326

相关推荐
刘马想放假2 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
北域码匠3 天前
冒泡排序太慢?鸡尾酒排序双向优化,原生 C# 零第三方库完整代码
数据结构·排序算法·泛型·c# 算法·鸡尾酒排序·原生 c# 开发·冒泡排序优化·嵌入式算法
Darling噜啦啦10 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠11 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾11 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres82111 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q11 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒11 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记11 天前
单项不带头不循环链表
数据结构·链表
小糯米60111 天前
JS 数组
数据结构·算法·排序算法