码迷,mamicode.com
首页 > 其他好文 > 详细

组合数的简单求法(dfs)

时间:2019-03-08 17:07:16      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:namespace   pac   mem   main   memset   out   mes   .com   string   

组合数的具体应用可以参考这个例子:https://www.cnblogs.com/FengZeng666/p/10496223.html

 

下面这段代码可以作为求组合数的固定套路或者公式

 1 #include<iostream>
 2 #include<cstring>
 3 
 4 using namespace std;
 5 
 6 int sum = 0;
 7 int a[1000];
 8 
 9 void dfs(int step, int n, int m)    //从n个数里面选出m个,存入一维数组a
10 {
11     if (step == (m+1))
12     {
13         ++sum;    //组合总数
14         for(int i = 1; i <= m; ++i)
15             cout << a[i] << " " ;    //所有组合
16         cout << endl;
17         return;
18     }
19     else
20     {
21         for (int i = 1; i <= n; i++)
22         {
23             //保证取得的这5个数大小是递增的,避免重复取
24             if (i > a[step - 1])
25             {
26                 a[step] = i;    //使用数组a保存已经取出的数,下标0不用
27                 dfs(step + 1, n, m);
28             }
29         }
30     }
31 }
32 
33 int main()
34 {
35     memset(a, 0, sizeof(a));
36     cout << "所有组合为:" << endl;
37     dfs(1, 6, 2);
38     cout << endl;
39     cout << "共有" << sum << "种组合" << endl;
40 
41 }

 

组合数的简单求法(dfs)

标签:namespace   pac   mem   main   memset   out   mes   .com   string   

原文地址:https://www.cnblogs.com/FengZeng666/p/10496287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!