首页 > 其他分享 >深度优先遍历例题(排列数字)

深度优先遍历例题(排列数字)

时间:2024-02-04 22:03:03浏览次数:21  
标签:输出 优先 遍历 return int dfs 排列 path 例题

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

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

输入格式

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

输出格式

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

1≤n≤7

#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 ++ )    printf("%d ", path[i]);
        puts("");
        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;
}


标签:输出,优先,遍历,return,int,dfs,排列,path,例题
From: https://blog.51cto.com/u_16492348/9594377

相关文章

  • 堆(优先队列)
    堆是一种树形结构,树的根是堆顶,堆顶始终保持为所有元素的最优值。有大根堆和小根堆,大根堆的根节点是最大值,小根堆的根节点是最小值。堆一般用二叉树实现,称为二叉堆。堆的存储方式堆的操作empty返回堆是否为空top直接返回根节点的值,时间复杂度\(O(1)\)push将新元素添加在......
  • leedcode 二叉树的中序遍历
    自己写的classSolution:def__init__(self):self.res_list=list()definorderTraversal(self,root):ifroot:ifroot==None:returnelse:self.inorderTraversal(root.left)......
  • 地铁最优线路算法的求解(三)-深度优先搜索java实现
    多的不说,showmethecode,先上一段java代码1/*2*深度优先算法(DFS)算法生成所有可能路径3*startId:出发站4*endId:到达站5*graph:辅助邻接矩阵,若99站与35站相邻,6*则graph[35][99]=1,graph[99][35]=17*8*......
  • 图的遍历
    /*反向考虑,反向建图,考虑从x号点出发,可以到达哪些点,我们从n~1开始枚举如果某一个点被更新到,呢么这个点一定不会被后面的点更新,就直接可以标记掉,从n号点出发可以到达5号点,呢么从n-1号点出发就可以直接跳过5号点,还有5号点能到达的点。复杂度是O(n),这样的想法很常见*/#include......
  • 【优先级调度算法:抢占式与非抢占式】
    (文章目录)前言在操作系统中,进程调度决定了哪个进程应该获得CPU的使用权,以便能够执行。而优先级调度算法就是其中之一,它通过为每个进程分配一个优先级来决定进程的执行顺序。什么是优先级调度算法?优先级调度算法是一种用于确定哪个进程将在CPU上执行的方法。每个进程都会被分配......
  • 2.C语言学习--分支与循环例题分析
    1.计算n的阶乘intmain(){ intret=1; inti=0; intn=0; scanf("%d",&n);//注意取地址符号&别忘记 for(i=1;i<=n;i++) { ret=ret*i; } printf("ret=%d\n",ret); return0;}效果如下所示:2.计算1!+2!+...+10!intmain(){ ......
  • 二叉树的广度遍历/层序遍历
    privateInteger[]breadthSearch(TreeNoderoot){ List<Integer>list=newArrayList<Integer>();//存放节点值 ArrayDeque<TreeNode>queue=newArrayDeque<TreeNode>();//队列,用来存放节点 queue.add(root); while(!queue.isEmpty()){ TreeNo......
  • 企业开始数字化转型,这四件事情需要优先考虑
      随处可见,公司都在宣布进行数字业务转型的计划。然而,他们面临的问题是决定从哪里开始。相关研究发现,66%的领导者制定了数字化转型计划,但实际上只有11%能够大规模实现。这些糟糕结果的原因是什么?高达57%的组织正在努力寻找转型的起点。如果您恰好是这些组织中的......
  • JS遍历对象的方法 Object.keys() Object.values()
    1.Object.keys():返回对象可枚举属性组成的数据2.Object.values():返回对象可枚举的属性的属性值,组成的数据letperson={name:'小李',age:'15',}console.log(Object.keys(person));//['name','age']//返回对象可枚举属性组成的数......
  • [刷题笔记] ybt 1364:二叉树遍历(flist)
    Problem_LinkDescription树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。Analysis我们先前做过给定前序......