递归实现组合型枚举
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 vector<int> f;//vector好像更快 玄学 5 void dfs(int k) 6 { 7 if(f.size()>m||n-k+1+f.size()<m) return; 8 if(k>n) 9 { 10 for(int i=0;i<f.size();i++) 11 printf("%d ",f.at(i)); 12 printf("\n"); 13 return; 14 } 15 f.push_back(k); 16 dfs(k+1); 17 f.pop_back(); 18 dfs(k+1); 19 } 20 int main() 21 { 22 scanf("%d%d",&n,&m); 23 dfs(1); 24 return 0; 25 }