C++组合的输出

发布时间:2026/7/19 22:50:15
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#includebits/stdc.h using namespace std; int n,m,arr[25]; void dfs(int num,int step){ arr[step]num; if(stepm){ for(int i1;istep;i){ coutsetw(3)arr[i]; } cout\n; return; } for(int inum1;in;i){ dfs(i,step1); } } int main(){ cinnm; dfs(0,0); return 0; }