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

算法题(173):枚举排列

审题:
本题需要我们找出所有排列方式并按照字典序排序输出

思路:
方法一:dfs深度优先搜索

由于最后还需要我们按照字典序输出,且无法事先确定需要的for循环层数,所以我们这里不能采用简单的for循环解决

决策树:

在选取的时候我们依次选取前面没有选过的数插入即可,最后选取满k就输出答案

解题:
 

#include<iostream>
#include<vector>
using namespace std;
int n, k;
vector<int> path;
bool judge[10];
void dfs()
{if (path.size() == k){for (auto e : path) cout << e << " ";cout << endl;return;}for (int i = 1; i <= n; i++){//数据选取if (judge[i] == true) continue;//选择过该数,跳过path.push_back(i);judge[i] = true;dfs();//数据回退path.pop_back();judge[i] = false;}
}
int main()
{cin >> n >> k;dfs();return 0;
}

注意:

1.使用bool数组来判断对应数据是否选取过,为false就是没选过,true就是选过

2.在选择完成和回溯的时候要注意将数据选取状态调整回来

B3623 枚举排列(递归实现排列型枚举) - 洛谷

http://www.dtcms.com/a/276276.html

相关文章:

  • Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输
  • MS Azure Eventhub 发送 AD log 到cribl
  • 学习笔记 Datewhale MCP Server Task2
  • 免费用Claude code薅羊毛
  • 【模板】最长公共子序列 详细解析
  • FastGPT革命:下一代语言模型的极速进化
  • 集训Demo1
  • 史上最全 MySQL 锁详解:从理论到实战,一篇搞定所有锁机制
  • 接口和抽象方法示例
  • C语言基础知识--联合体
  • Mybatis的一级缓存与二级缓存
  • 电网失真下单相锁相环存在的问题
  • STM32第二十一天定时器TIM
  • docker搭建 与镜像加速器
  • LeetCode经典题解:3、无重复字符的最长子串
  • 【Elasticsearch】post_filter
  • 【MATLAB代码】Chan方法解算TOA,用于三维目标的定位,锚点数量可自适应。订阅专栏后可查看完整代码
  • Windows环境下解决Matplotlib中文字体显示问题的详细指南
  • PyTorch神经网络实战:从零构建图像分类模型
  • linux----------------------线程同步与互斥(上)
  • 搭建MySQL读写分离
  • LiteFlow源码
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 手把手教你 Aancond 的下载与 YOLOV13 部署(环境的创建及配置下载)以及使用方法,连草履虫都能学会的目标检测实验!
  • net.createServer详解
  • Python后端项目之:我为什么使用pdm+uv
  • 模拟注意力:少量参数放大 Attention 表征能力
  • hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
  • 深入解析C#接口实现的两种核心技术:派生继承 vs 显式实现
  • Java 21 虚拟线程