欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

搜索和图论——DFS—day—22

程序员文章站 2023-12-26 23:22:27
...

DFS—暴力搜索
1、按照怎样的顺序搜索
搜索和图论——DFS—day—22
842、排列数字
问题
给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。

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

输入格式
共一行,包含一个整数n。

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

数据范围
1<=n<=71 <= n <= 7

输入样例

3

输出样例

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

完整代码实现

#include <iostream>

using namespace std;

const int N = 10;

int n;
int path[N];
bool st[N];

void dfs(int u)
{
    if (u == n)
    {
        for (int i = 0; i < n; i++) cout << path[i] << " ";
        cout << "\n";
        return;
    }
    
    
    
    for (int i = 1; i <= n; i ++)
    if(!st[i]) //查看当前值有没有搜索过
    {
        path[u] = i; //没有就进行搜索
        st[i] = true; //并记录下来已经被用过
        dfs(u + 1);  //深度搜索下一层
        st[i] = false;//搜索完后回溯,并删除记录,重新搜索
    }
}

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

上一篇:

下一篇: