排列数字(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;
}
相关推荐
2401_83656318几秒前
C++中的枚举类高级用法
开发语言·c++·算法
bantinghy3 分钟前
Nginx基础加权轮询负载均衡算法
服务器·算法·nginx·负载均衡
chao18984411 分钟前
矢量拟合算法在网络参数有理式拟合中的应用
开发语言·算法
代码无bug抓狂人18 分钟前
动态规划(附带入门例题)
c语言·算法·动态规划
weixin_4454023036 分钟前
C++中的命令模式变体
开发语言·c++·算法
季明洵37 分钟前
C语言实现顺序表
数据结构·算法·c·顺序表
Hgfdsaqwr43 分钟前
实时控制系统优化
开发语言·c++·算法
2301_821369611 小时前
嵌入式实时C++编程
开发语言·c++·算法
sjjhd6521 小时前
多核并行计算优化
开发语言·c++·算法
weixin_395448911 小时前
main.c_cursor_0130
前端·网络·算法