题目:排列数字(全排列)

给定一个整数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

代码:

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

class Solution
{
public:
    void func(int n,vector<int>& flag)
    {
        if (tmp.size() == n)
        {
            result.push_back(tmp);
            return;
        }
        for (int i = 1; i <= n; i++)
        {
            if (flag[i] == false)
            {
                flag[i] = true;
                tmp.push_back(i);
                func(n, flag);
                tmp.pop_back();
                flag[i] = false;
            }
        }
    }
    vector<vector<int>> result;
    vector<int> tmp;
};

int main()
{
    int n;
    cin >> n;
    vector<int> flag(n+1, 0);
    Solution sol;
    sol.func(n, flag);
    for (auto x : sol.result)
    {
        for (auto y : x)
        {
            cout << y << " ";
        }
        cout << endl;
    }
    return 0;
}

 

posted on 2022-09-28 08:43  yc-limitless  阅读(42)  评论(0)    收藏  举报