一般组合
来源:互联网 发布:java服务器端环境搭建 编辑:程序博客网 时间:2024/05/01 00:40
输入n 个数,从中选出m 个数可构成集合,输出所有这样的集合。
思路:采用递归(回溯)实现。使用了中间变量p,保证了每次选的数字在num 中的下标是递增的,所以也就不需要进行标记,共C(n, m)种组合。
#include <cstdio>#define N 10using namespace std;int n, m; //从n个数中选出m个构成组合int rcd[N]; //记录选出的数int num[N]; //存放输入的n个数void select(int l, int p){int i;if (l == m) //若选出了m个数, 则打印返回 {for (i=0; i<m; i++)printf("%d ", rcd[i]);//printf("\nreturn\n\n");printf("\n");return ;}for (i=p; i<n; i++){//printf("p=%d,i=%d\n",p,i);rcd[l] = num[i];//printf("l=%d,rcd[%d]=num[%d]=%d\n\n",l,l,i,rcd[l]);select(l+1, i+1);}}int main(){while(scanf("%d%d", &n, &m)!=EOF){for (int i=0; i<n; i++)scanf("%d", &num[i]);select(0, 0);}return 0;}
下图是我自己理解递归的时候画的:
0 0
- 一般组合
- 一般排序组合
- 子集生成与一般组合
- 深搜与一般组合
- 组合问题的一般C++解法
- 一般
- 找到一般以内的可以组成无限循环小数的所有组合
- OC一般类(简单类,组合类,继承关系的子类)的拷贝
- Android中的属性动画(一般属性动画,组合属性动画,AnimatorSet,动画监听)
- 数据库引擎的一般用c开发,因为比较快;事务是一系列操作的组合成原子操作。
- 组合
- 组合
- 组合
- 组合
- 组合
- 组合
- 组合
- 组合
- jQuery File Upload 多文件 单击选中或多选文件直接自动上载 无需提交按钮
- Docke 1.12 基础篇:48条命令(3)
- 微信解读
- 散列码中的equals问题
- CentOS7 安装 Mysql 5.7,密码查看与修改
- 一般组合
- Android 读取assets的数据库文件
- POJ 2187:Beauty Contest (凸包+旋转卡壳)
- 我的愿望是世界和平
- 又有几天没有写博客了,最近把以前学的也整理下,发到博客中
- 教育的未来--我的感想
- 浅谈Android几种更新UI的方式
- 虚拟机安装
- ZooKeeper的状态转换过程