排列数字(dfs)

排列数字

给定一个整数 n,将数字 1∼n排成一排,将会有很多种排列方法。

现在,请你按照字典序将所有的排列方法输出。

输入格式

共一行,包含一个整数 n。

输出格式

按字典序输出所有排列方案,每个方案占一行。

数据范围

1≤n≤7

输入样例:

3

输出样例:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

cpp 复制代码
#include<iostream>

using namespace std;

const int N=10;

int n;
int path[N];
bool st[N];//标记当前位置是否访问过,方便后续回溯

void dfs(int u){
    if(u==n)
    {
        for(int i=0;i<n;i++) printf("%d ",path[i]);
        printf("\n");
        return ;
    }
    for(int i=1;i<=n;i++){
        if(!st[i]){
            path[u] = i;
            st[i] = true;//访问标记
            dfs(u+1);
            st[i] = false;//回溯
        }
    }
}

int main(){
    cin>>n;
    dfs(0);
    return 0;
}
相关推荐
罗西的思考12 小时前
【Agentic RL】Dressage Staleness 控制深度分析
人工智能·算法·机器学习
quaer12 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
高晶13 小时前
无乘法器实现LC二阶滤波器:基于移位运算的快速算法与四种精度推导
算法·设计模式·程序员
ysbfsy13 小时前
大数计算思路
算法
高晶14 小时前
主从自动分配算法:平均值乘以设备数一半的选举基准值解析
算法·设计模式·程序员
学电子她就能回来吗14 小时前
LeetCode Hot 100|普通数组专题学习笔记(零基础版)
笔记·算法·leetcode
用户老李14 小时前
反向传播计算梯度举例
算法
niyongsheng14 小时前
多智能体连续时间内路径规划:AA-SIPP(m) 的 Rust 实现与算法
算法·rust·机器人
302wanger15 小时前
DeepSeek-V4.1-Flash-1017 免费用到1024,速来
算法
lisw0515 小时前
微分与积分的本质区别解析
算法·数学建模·极限编程