递归法求组合数C(m,n)
2024-10-21 06:43:08
假设这样一个数组:
1 2 3 4 5
n=5
若 m=3 也就是要求C(3,5)
首先先选第一个数 1
那么剩下的工作就是在2-5之间选择2个数
如果我们没有选择第一个数 选第二个数2
那么剩下的工作就是在3-5之间选择2个数
这样就很好递归了 只需要记录下当前已经选了几个数 当前选的最后一个数是什么 递归即可
#include<bits/stdc++.h> using namespace std; int sum=; //记录总数 void digui(int *a,int *b,int t,int now,int n,int m)
{
int i;
if(t==m) //t记录已经选择了几个数 若=m,输出结果
{
for(i=;i<m;i++)
cout<<b[i]<<" ";
cout<<endl;
sum++;
return;
}
else
{
for(i=now;i<=n-(m-t);i++) //now代表现在可以从哪个数选起
{
b[t]=a[i];
digui(a,b,t+,i+,n,m);
}
}
} int main()
{
int a[],b[],i,n,m; //a为原数组 b存储结果
cin>>n>>m;
for(i=;i<n;i++)
cin>>a[i];
digui(a,b,,,n,m);
cout<<sum<<endl;
}
最新文章
- Linux – Usermod命令参数解析和实例说明
- sqlalchemy 实体属性提前加载
- 选项卡切换:自动定时&;主动触发事件
- Oracle第三方ado.net数据提供程序
- SVG的使用
- IOS第七天(4:UiTableView 数据的显示优化重复实例和tableFooterView和tableHeaderView)
- 为Elasticsearch添加中文分词,对比分词器效果
- ASP.NET获取路径的方法
- servlet--页面自刷新
- ubuntu中文实训手册
- 纯CSS实现各类气球泡泡对话框效果
- CentOS 7 yum 安装 MySQL5.7
- A*寻路算法入门(二)
- 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案
- jumpserver+Keepalived中一些配置
- Vue vue.extend 和vue.component 两则之间的区别
- Cname与A记录(Address)区别
- [转载] MySQL 注入攻击与防御
- MySQL插值语句
- 十一:Centralized Cache Management in HDFS 集中缓存管理
热门文章
- 5G技术被夸大?专家来测试一下
- HDU-6668-Polynomial(数学)
- R语言-六大数据结构
- [洛谷P3322] SDOI2015 排序
- springCloud——Dalston.SR5升级到Greenwich.SR2
- c# 谷歌动态口令对接
- 解决eclipse部署maven项目无法导入lib的问题
- BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集
- 向android模拟器打电话发短信的简单方法
- [BZOJ3622]已经没有什么好害怕的了:DP+容斥原理