排列组合问题初步
来源:互联网 发布:优惠券制作软件 编辑:程序博客网 时间:2024/06/10 22:33
1. 从n个人中选择k个人的不同组合数
法一:递归
由n个人里选k个人的组合数=由n-1个人里选k个人的组合数+由n-1个人里选k-1个人的组合数。此公式本身是递归的,因此可编写递归函数实现这一过程,其中递推结束条件是n=k或k=0,这时的组合数为1,然后开始回归。
源代码:
#include <iostream>using namespace std;int comm(int n,int k){ if(k>n) return 0; else if(n==k || k==0) return 1; else return comm(n-1,k)+comm(n-1,k-1); //“递归”,即自身调用}int main(){ int n,k; while(cin>>n>>k) cout<<comm(n,k)<<endl; return 0;}
程序截图:
法二:直接套用约分后的组合数公式,并写成普通函数
源代码:
#include <iostream>using namespace std;int fun(int n,int k){ double fz,fm,fm1,fm2; int i,j; fz=1,fm=1; fm1=k; fm2=n-k; for(i=((fm1>fm2)?fm1:fm2)+1;i<=n;i++) fz*=i; for(j=1;j<=((fm1<fm2)?fm1:fm2);j++) fm*=j; return fz/fm;}int main(){ int n,k; while(cin>>n>>k) cout<<fun(n,k)<<endl; return 0;}
程序截图:
0 0
- 排列组合问题初步
- 排列组合初步学习
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 一个排列组合的问题
- [转]Uboot对Ext4文件系统的支持
- effective stl 第36条:理解copy_if的正确实现
- icpc大连栈
- python pil安装
- 1096. Consecutive Factors
- 排列组合问题初步
- NOIP历年搜索整理
- LeetCode 32. Longest Valid Parentheses(hard)
- 多态,抽象类,接口,UML图
- 为button添加href
- MySQL学习笔记
- Android 观察者模式
- 写wal log日志
- 2016秋季练习