结合数的生成(DFS)
组合数的生成(DFS)
#include <iostream> #include <cstdio> #define maxn 10000 using namespace std; int b[maxn]; int r, n; void dfs(int lev, int p){ int i, j; if(lev > r){ for(i = 1; i <= r; i++){ printf("%d ", b[i]); } printf("\n"); return ; } for(j = p; j <= n; j++){ b[lev] = j; dfs(lev+1, j+1); } return ; } int main() { while(scanf("%d%d", &n, &r)!=EOF){ dfs(1, 1); } return 0; }