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

AcWing 递归实现组合型枚举

从 1∼n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。

输入格式

两个整数 n,m,在同一行用空格隔开。

输出格式

按照从小到大的顺序输出所有方案,每行 1 个。

首先,同一行内的数升序排列,相邻两个数用一个空格隔开。

其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如 1 3 5 7 排在 1 3 6 8 前面)。

数据范围

1<n<21

0≤m≤n

输入样例:
5 3
输出样例:
1 2 3 
1 2 4 
1 2 5 
1 3 4 
1 3 5 
1 4 5 
2 3 4 
2 3 5 
2 4 5 
3 4 5 

 

顺序:依次枚举每个位置放哪个数 

#include<iostream>
using namespace std;const int N = 25;
int n, m;
int a[N];  //存储当前生成的组合结果//x:当前枚举到了哪个位置  start:从哪个数开始枚举 
void dfs(int x, int start)
{if(x>m)  //已选满m个数,输出组合{for(int i=1; i<=m; ++i) cout<<a[i]<<" ";cout<<endl;return;}for(int i=start; i<=n; ++i){a[x]=i;dfs(x+1, i+1);a[x]=0;}
}int main()
{cin>>n>>m;dfs(1, 1);  //从第1个位置开始枚举,起始数字为1return 0;
} 
http://www.xdnf.cn/news/4517.html

相关文章:

  • 性能比拼: Redis Streams vs Pub/Sub
  • 电池全自动生产线:驱动新能源产业升级的核心引擎
  • 华为安全认证好还是数通认证好?
  • Excel表格批量合并工具推荐
  • 每日算法-250507
  • Manus AI突破多语言手写识别的技术壁垒研究报告
  • SpringBoot学习笔记(1)
  • 【信奥数学基础】最小公倍数与不等式证明
  • Docker 容器化部署深度研究与发展趋势
  • 【数据结构】单链表
  • Qt开发经验 --- 避坑指南(6)
  • Android接入国标平台:工业现场级的GB28181移动端接入实践
  • ps信息显示不全
  • 【纯小白博客搭建】Hugo+Github博客部署及主题(stack)美化等界面优化记录
  • 基于STM32、HAL库的ZMOD4410AI1R 气体传感器驱动程序设计
  • qwen2.5vl
  • 考研数据结构之树形查找:二叉排序树、平衡二叉树与红黑树(包含真题解析)
  • 使用 Couchbase Analytics Service 的典型步骤
  • 【面板数据】公开整理-各省刑事案件统计数据集(2011-2023年)
  • Java01-初识Java
  • C 语言 第六章 结构体(1)
  • 短词匹配:拼音相似度
  • LeetCode热题100--73.矩阵置零--中等
  • C语言初阶--数组
  • GSENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • 探针卡的类型及其在半导体测试中的应用
  • Java高频面试之并发编程-13
  • 奥威BI:AI驱动的智能财务分析革新,重塑企业决策新范式
  • 深入探索 Spark RDD 行动算子:功能解析与实战应用
  • Python基础语法(上)