【C++ 真题】P1706 全排列问题

全排列问题

题目描述

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

输入格式

一个整数 n n n

输出格式

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

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

样例 #1

样例输入 #1

3

样例输出 #1

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

提示

1 ≤ n ≤ 9 1 \leq n \leq 9 1n9

题解

#include
using namespace std;
const int N = 1e3+7;

bool used[N];
int n;
vector<int> path;

int dfs(int a){
    if(a == n){
        for(int i=0;i<path.size();++i){
            cout<<"    "<<path[i];
        }
        cout<<endl;
    }
    for(int i=1;i<=n;++i){
        if(!used[i]){
            used[i] = 1;
            path.push_back(i);
            dfs(a+1);
            path.pop_back();
            used[i] = 0;
        }
        // cout<
    }
    return 0;
}

int main(){
	cin>>n;
    dfs(0);
    
    return 0;
}
	


你可能感兴趣的:(C++,真题【洛谷】,c++,算法,深度优先)