全排列问题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 小时前
9.优先级队列与堆:从底层原理到实战应用的完整指南
数据结构·算法
牧以南歌〆3 小时前
数据结构<三>单循环链表
c语言·数据结构·算法·链表
Java技术实战3 小时前
一文通解:数据结构之 栈
java·jvm·数据结构·
Lucis__6 小时前
基于Cache替换算法的LRU缓存实现
数据结构·c++·算法·缓存·lru
来一碗刘肉面15 小时前
顺序表与链表的比较
数据结构·算法·链表
txzrxz16 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色
fpcc18 小时前
数据结构和算法—数学的应用
数据结构·c++·算法
皓月斯语18 小时前
B4451 [GESP202512 四级] 建造 题解
数据结构·c++·算法·题解
牧以南歌〆20 小时前
数据结构<八>链式队列
c语言·数据结构·算法
一个初入编程的小白20 小时前
数据结构:队列和栈的相互实现
数据结构