《全排列》

66 阅读1分钟
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 10;
int nums[N];
bool st[N];
int n;
void dfs(int u, int nums[], bool st[])
{
    if (u > n)
    {
        for (int i = 1; i <= n; i ++)
        {
            cout << nums[i] << ' ';
        }
        cout << endl;
    }
    else
    {
        for (int i = 1; i <= n; i ++)
        {
            if (!st[i])
            {
                st[i] = true;
                nums[u] = i;
                dfs(u + 1, nums, st);
                st[i] = false;
            }
        }
    }
}
void solve()
{
    cin >> n;
    dfs(1, nums, st);
    memset(nums, 0, sizeof(nums));
    memset(st, 0, sizeof(st)); 
}
int main()
{
    int t;
    cin >> t;
    while (t --)
    {
        solve();
    }
    return 0;
}