用递归法计算从n个人中选择k个人组成一个委员会的不同组合数
2017-04-22 20:54
537 查看
分析:
1、如果k>n,结果为0
2、k=n时,只有1组
3、k<n的时候,可以把解空间分为两部分:假设其中一个人叫X,那么选X的解和不选X的解加起来就是总的解。不选X的话,那么在剩下的n-1个人中选k个。选X的话,在剩下的n-1个人中再选k-1个。
代码:
1、如果k>n,结果为0
2、k=n时,只有1组
3、k<n的时候,可以把解空间分为两部分:假设其中一个人叫X,那么选X的解和不选X的解加起来就是总的解。不选X的话,那么在剩下的n-1个人中选k个。选X的话,在剩下的n-1个人中再选k-1个。
代码:
#include<iostream> using namespace std; int fun(int n, int k){ if (k == n||k==0){ return 1; } if (k > n){ return 0; } return fun(n - 1, k) + fun(n - 1, k - 1); } int main(){ cout << "输入两个整数n和k:"; int n, k; cin >> n >> k; cout << "C(n,k)=" << fun(n, k) << endl; return 0; }
相关文章推荐
- 递归法计算从n个人中选选k个人组成一个委员会的不同组合数
- 给你不同面值的硬币和总金额target。 写一个函数来计算组成这个数量的组合的数量。
- 根据个人的性格不同我认为要有选择的看待这个建议,写在这里也是给自己一个警示
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
- js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) 解决 WdatePicker.js my97日期选择控件
- 编程算法 - 计算一个数的所有组合数 代码(C++)
- 对于每个小伙伴,在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。
- 给出a-z0-9,在其中选择三个字符组成一个密码,输出全部的情况,程序实现
- 请用Java实现一个算法:由a-z、0-9组成3位的字符密码,并打印所有可能的密码组合。
- 给定正整数n和m,计算出n个元素的集合{1,2,...,n}可以划分为多少个不同的由m个元素组成的子集合
- 每日一省之————递归法计算数组的所有排列组合
- 计算数组中的任意个数字的和为某一个值的组合
- 一个页面内要跳转不同的控制器,如个人中心页面
- 同一个表单可以根据用户的选择,提交给不同的后台处理程序
- 1-n,从中选择任意两两不同的k个数,输出所有可能的组合,要求不重不漏
- js获取两个数组不同的元素并返回不同元素组成的数组,并对不同的元素添加一个新的属性
- Oracle: SQL组合不同字段作为一个查询条件
- 将不同的html页面组合成一个——通过框架标签frameset和frame实现
- 给定一个字符数组,求由这些字符组成的所有不同的排序问题.
- Java 组合的实现- 输入一个字符,输出字符中字母组成的所有组合