c++ 深度优先搜索树dfs

排列

给定一个整数 nn,将数字 1∼n1∼n 排成一排,将会有很多种排列方法。

现在,请你按照字典序将所有的排列方法输出。

输入格式

共一行,包含一个整数 nn。

输出格式

按字典序输出所有排列方案,每个方案占一行。

数据范围

1≤n≤91≤n≤9

输入样例:

3

输出样例:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
#include
using namespace std;
const int N=10;
int n;
void dfs(int x,bool st[],int num[])//变量x是数组的下标,即第几个位置。
{
    if(x>n)//大于n表示已经全部写完n个数了。
    {for(int i=1;i<=n;i++)
    {cout<>n;
    bool st[N]={0};//本题的数据是1-9,即只会用到1-n这几个数,设置10此时数组最大的下标是9,不会越界。
    int num[N];//同理
    dfs(1,st,num);//从1开始的意思是从第一个位置开始写进数组,不用0开始会更容易理解。
    return 0;
    
    
    
    
}

 

你可能感兴趣的:(作业,c++,深度优先,蓝桥杯)