C++组合的输出

这段代码实现了一个组合生成器,使用深度优先搜索(DFS)算法从1到n的数字中生成所有可能的m个数字的组合。程序首先读取n和m,然后从0开始递归遍历,确保每个新数字比前一个大,避免重复。对于每个有效组合(长度为m),按3位宽度格式化输出。例如输入5和3会输出所有3个数字的递增组合。代码简洁高效,利用递归和回溯实现组合生成。

输入

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
cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,arr[25];
void dfs(int num,int step){
    arr[step]=num;
    if(step==m){
        for(int i=1;i<=step;i++){
            cout<<setw(3)<<arr[i];
        }
        cout<<'\n';
        return;
    }
    for(int i=num+1;i<=n;i++){
        dfs(i,step+1);
    }
}
int main(){
    cin>>n>>m;
    dfs(0,0);
    return 0;
}
相关推荐
positive_zpc2 小时前
进阶数据结构图——最短路径(二)
数据结构·算法·图论·最短路径
蒸蒸yyyyzwd2 小时前
cpp web server 面试可能问题总结
c++·笔记·八股
啊啊啊啊啊!!!!2 小时前
【c++】map和set的使用
开发语言·c++
positive_zpc2 小时前
进阶数据结构图——最小生成树(一)
数据结构·算法·图论
小灰灰搞电子2 小时前
分享自己写的一个通信协议源码,支持C++和C,双包头+不定长
c语言·开发语言·c++
码完就睡2 小时前
数据结构——遍历二叉树
数据结构·算法
evans在进步2 小时前
LeetCode 238 除自身以外数组的乘积:前缀积与后缀积详解
算法·leetcode·职场和发展
Brilliantwxx2 小时前
【C++】初入嵌入式C++复习-----经典面试题100道
开发语言·c++·算法·面试·职场和发展
汉克老师2 小时前
CSP-J 初赛(以满分为目标):第十六课 《STL容器与常见数据结构——C++自带的“数据结构工具箱”》
c++·csp-j·小学生·学c++编程
动词ing2 小时前
【学习笔记】字符串(遍历+反转+替换+子串匹配+KMP)+题目解析
学习·算法