C++组合的输出
📅 2026/7/19 23:01:12
👁️ 阅读次数
📝 编程学习
这段代码实现了一个组合生成器,使用深度优先搜索(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
#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; }
编程学习
技术分享
实战经验