假设这样一个数组:

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;
}

最新文章

  1. Linux – Usermod命令参数解析和实例说明
  2. sqlalchemy 实体属性提前加载
  3. 选项卡切换:自动定时&amp;主动触发事件
  4. Oracle第三方ado.net数据提供程序
  5. SVG的使用
  6. IOS第七天(4:UiTableView 数据的显示优化重复实例和tableFooterView和tableHeaderView)
  7. 为Elasticsearch添加中文分词,对比分词器效果
  8. ASP.NET获取路径的方法
  9. servlet--页面自刷新
  10. ubuntu中文实训手册
  11. 纯CSS实现各类气球泡泡对话框效果
  12. CentOS 7 yum 安装 MySQL5.7
  13. A*寻路算法入门(二)
  14. 打开office时提示错误窗口“向程序发送命令时出现问题”的解决方案
  15. jumpserver+Keepalived中一些配置
  16. Vue vue.extend 和vue.component 两则之间的区别
  17. Cname与A记录(Address)区别
  18. [转载] MySQL 注入攻击与防御
  19. MySQL插值语句
  20. 十一:Centralized Cache Management in HDFS 集中缓存管理

热门文章

  1. 5G技术被夸大?专家来测试一下
  2. HDU-6668-Polynomial(数学)
  3. R语言-六大数据结构
  4. [洛谷P3322] SDOI2015 排序
  5. springCloud——Dalston.SR5升级到Greenwich.SR2
  6. c# 谷歌动态口令对接
  7. 解决eclipse部署maven项目无法导入lib的问题
  8. BZOJ 4423: [AMPPZ2013]Bytehattan 平面图转对偶图 + 并查集
  9. 向android模拟器打电话发短信的简单方法
  10. [BZOJ3622]已经没有什么好害怕的了:DP+容斥原理