递归实现排列型枚举题目例题

问题描述

把 1∼n1∼n 的 nn 个正整数排成一行后随机打乱顺序,按字典序输出所有不同的方案。

输入格式

输入一行,包含一个正整数 nn。(1≤n≤8)(1≤n≤8)

输出格式

输出 n!n! 行,每一行为一种方案。字典序较小的先输出。

cpp 复制代码
#include <stdio.h>
#include <stdbool.h> 

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

void dfs(int u) 
{
    if (u > n) 
    {
        for (int i = 1; i <= n; i++) 
        {
            printf("%d ", path[i]);
        }
        printf("\n");
        return; 
    }

    for (int i = 1; i <= n; i++) 
    {
        if (st[i] == false) 
        {
            path[u] = i;    
            st[i] = true;   

            dfs(u + 1);

            st[i] = false; 
        }
    }
}

int main() 
{
    if (scanf("%d", &n) != 1) return 0;

    dfs(1);

    return 0;
}
相关推荐
白羊by6 小时前
YOLOv1~v11 全版本核心演进总览
深度学习·算法·yolo
墨尘笔尖8 小时前
最大最小值降采样算法的优化
c++·算法
white-persist10 小时前
【vulhub shiro 漏洞复现】vulhub shiro CVE-2016-4437 Shiro反序列化漏洞复现详细分析解释
运维·服务器·网络·python·算法·安全·web安全
FL162386312910 小时前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#
baizhigangqw11 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶
算法·启发式算法·web app
C雨后彩虹11 小时前
最多等和不相交连续子序列
java·数据结构·算法·华为·面试
cpp_250112 小时前
P2347 [NOIP 1996 提高组] 砝码称重
数据结构·c++·算法·题解·洛谷·noip·背包dp
Hugh-Yu-13012312 小时前
二元一次方程组求解器c++代码
开发语言·c++·算法
编程大师哥12 小时前
C++类和对象
开发语言·c++·算法
加农炮手Jinx13 小时前
LeetCode 146. LRU Cache 题解
算法·leetcode·力扣