1-N的全排列

发布于 2022年 02月 14日 01:32

#include<iostream>
using namespace std;

int visit[100];//用来判断这个数字是否被访问过 如 visit[2]=1;说明数字2被访问过 
int a[100];//0-(n-1)存放数字 

void dfs(int index, int n)
{
    if (index == n)//终止条件 
    {
        for (int i = 0; i < n; i++) {
            cout << a[i] << " ";
        }
        cout << endl;
        return;
    }
    for (int i = 1; i <= n; i++)//判断数字是否被访问过 
    {
        if (visit[i] == 0) {
            visit[i] = 1;
            a[index] = i;
            dfs(index + 1, n);
            visit[i] = 0;
        }
    }
}

int main()
{
    int n;
    cin >> n;
    dfs(0, n);//前者表示目前是第几个数字,后者表示 n(用来进行终止条件判断的)
    return 0;
}

推荐文章