递归实现组合型枚举

 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 }

 

posted @ 2018-12-22 13:59  宇興  阅读(781)  评论(0编辑  收藏  举报