当前位置: 首页 > article >正文

dfs排列数字(新手)c++

一、题目

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

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

输入格式

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

输出格式

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

数据范围

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 sts[N];

void dfs(int u)
{
    if (u == n)
    {
        for (int i = 0; i < n; i ++ ) printf("%d ", path[i]);
        puts("");

        return;
    }

    for (int i = 1; i < n; i ++ )
        if (!st[i])
        {
            path[u] = i;
            st[i]=ture;//标记已经选中的数
            dfs(u+1);
            st[i]=false;//取消被选中的数(回溯)
        }
}

int main()
{
    scanf("%d", &n);

    dfs(0);

    return 0;
}

 


http://www.kler.cn/news/359765.html

相关文章:

  • 基序对酶特异性功能的影响-文献精读67
  • 虚拟现实辅助工程技术在现代汽车制造中的重要性
  • CentOS系统Nginx的安装部署
  • HashMap如何处理Hash碰撞
  • PHP爬虫:获取数据的入门详解
  • ArcGIS 最新底图服务地址
  • git 免密的方法
  • CANoe_C#如何调用CANoe的诊断
  • jmeter学习(8)界面的使用
  • 基于PHP的茶叶商城系统
  • 华为云软件开发生产线(CodeArts)9月新功能特性
  • 局域网——Prim Kruskal
  • 机器视觉系统硬件组成之工业相机篇
  • 性能测试面试题库总结(40道精选题目)
  • Spark_入库时报错ORA-00001 unique constraint violated 解决办法
  • 【Dash】feffery_antd_components 按钮组件的应用
  • AnaTraf | 网络性能监控与TCP响应时延:保障高效运维的核心要素
  • 前端算法合集-2(含面试题-美团一面)
  • GitHub加速
  • 跨界创新|使用自定义YOLOv11和Ollama(Llama 3)增强OCR文本识别