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

问题描述

把 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;
}
相关推荐
小蒋学算法16 小时前
算法-交替删除操作后最后剩下的整数-跟着灵茶山艾府学算法
数据结构·算法
荆棘鸟智能16 小时前
林业遥感长势评估怎么做?从NDVI时序分析到LiDAR蓄积量回归
人工智能·算法·智慧林业
hhb_61817 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
朝朝辞暮i17 小时前
C++ 第 6 课:switch —— 多状态选择
开发语言·c++·算法
苏打豆18 小时前
Pinocchio源码阅读——刚体运动物理量空间变换及求导
c++·线性代数·算法·矩阵·机器人
FluxArt18 小时前
GPT Image 2.5 中文提示词教程:Flux Art 可复用模板
前端·gpt·算法
思麟呀18 小时前
位运算:从一个整数到一个集合
c语言·数据结构·c++·算法
阜阳山君GEO18 小时前
豆包 SEED 新版本 GEO 优化:信源金字塔、打分体系与避坑落地指南
人工智能·算法
晓天衡宇•评测社区18 小时前
晓天衡宇亮相 2026 云栖大会:迈向更可信的高质量评测
人工智能·算法·机器学习
CQU_JIAKE19 小时前
9.12[a]
算法