洛谷-P1706 全排列问题

洛谷-P1706 全排列问题

原题链接:https://www.luogu.com.cn/problem/P1706


题目描述

输出自然数 (1)(n) 所有不重复的排列,即 (n) 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 (n)

输出格式

(1 sim n) 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 (5) 个场宽。

输入输出样例

输入 #1

3

输出 #1

    1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1

说明/提示

1≤n≤9

C++代码

#include <iostream>
#include <iomanip>
using namespace std;

int n, a[10], b[10];

void dfs(int k) {
    if (k > n) {
        for (int i=1; i<=n; ++i)
            cout << setw(5) << a[i];
        cout << endl;
        return ;
    }
    for (int i=1; i<=n; ++i) {
        if (b[i] == 1)
            continue;
        a[k] = i;
        b[i] = 1;
        dfs(k+1);
        b[i] = 0;
    }
}

int main() {
    cin >> n;
    dfs(1);
    return 0;
}
原文地址:https://www.cnblogs.com/yuzec/p/13784025.html