#include <iostream>
using namespace std;
#define MAX 4
/**
* (组合: C(m,n))
* 从n个元素中选择m个元素,他们之间没有次序关系
* 以1,2,3,4为例,n=4,m=2。C[]存放组合结果。
* 先确定c[0]=1,然后再从剩下的3(n-i-1)个中选择1(m-1)个。
* 第二轮确定c[0]=2,然后再从剩下的2(n-i-1)个中选择1(m-1)个。
* 直到确定c[0]=3,再往下剩下的元素里面没有m-1个了,不能再选。
*
* 要点:每次都只能选择起始点后面的数字(避免重复),所以设置curPos变量
* a[]: 候选集, n: 大小,m: 选择m个, result[]: 存放组合结果
* curPos:当前选择了a[]中的第curPos个元素
* count:计数,当前选择了几个元素,选到m个之后停止。
*/
void combination(char a[], int n, int m, int curPos, int count, char result[]){
//选择结束,输出
if(count == m){
for(int i=0;i<m;i++){
cout<<result[i];
}
cout<<endl;
}
else{
//起始点的选择范围是当前起始点curPos后面的所以点
for(int i=curPos;i<n;i++){
result[count] = a[i]; //每个后面的元素都尝试
combination(a, n, m, i+1, count+1, result); //注意下一个curPos是i+1
}
}
}
/**
* (子集)
* 利用求解组合的函数,即可求解子集。
* 子集就是n个元素中分别选择1个,2个,3个...
*/
void sub_set( char a[], int n){
char c[MAX];
for(int i=1;i<=n;i++){
combination(a, n, i, 0, 0, c); //n个元素中选择i个
}
}
int main(){
char a[MAX] = {'a' ,'b' ,'c' ,'d' };
cout<<"\n=== 组合 ===" <<endl;
char result[3];
combination(a, MAX, 3, 0, 0, result);
cout<<"\n=== 子集 ===" <<endl;
sub_set(a, MAX);
return 0;
}
分享到:
相关推荐
计算组合数C(i, j)并输出所有组合。开发环境为VC6.0,项目类型为控制台程序。
根据题目要求输出组合数,且只要不选择退出,可以重复,多次输入需要组合的方案,最后输出各种组合的结果。
德阳旭捷科技有限公司 ZM24 4 通道模拟量输入、4 通道模拟量输出组合模块使用手册 V1.14 通道模拟量输入 4 通道模拟量输出组合模块产品介绍ZM24
DFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSy以深度优先搜索输出...
ArcGIS中的输出组合 这是一个动态的工作组合,反映了学习的关键领域。 上传的作品说明: LCA_MCE.pdf-比较苏格兰两种用于农业的土地能力评估方法的报告。 Unit1_Practical2.aprx-每个家庭和邻近零售中心的...
为了进一步减小信号失真,提高去除运动干扰的能力,提出了一种前馈组合自适应滤波器(FFC-AF),采用参考信号对运动干扰的稳态程度进行估计,将两个并行的自适应滤波器的输出组合起来。用十位健康志愿者的移动心电...
综合多输出组合逻辑二级电路CAD软件算法的改进 (1990年)
该方法采用回溯算法来实现,在遍历树的同时,剪裁解空间树并输出组合测试用例。在算法的实现过程中,采用了一些策略以便提高算法的效率并节省空间。实验结果证明该方法是可行和有效的,对于一些输入参数依赖关系明确...
c语言程序输出所有不重复八卦排列组合.txt
两路输出组合使用时,可调节一路主路电源,从路自动跟踪。 LED显示器:分别指示两路输出电压和电流值 电压调节旋钮:调节电压 电流调节旋钮:调节电流 直流稳压电源运用过程 第一步:电源衔接。将稳压电源衔接...
excel VBA - 排列组合生成算法 - ,可快速生成指定项目的所有排列组合
模块化输入串联输出串联组合系统分布式均压控制策略,王广江,陈武,将多个变换器模块的输入端串联、输出端串联(Input-Series Output-Series,ISOS)构成的ISOS组合系统十分适用于输入电压和输出电压均较高的�
实现桶形移位器组合逻辑,要实现的功能如下: 输入为32位二进制向量,根据方向和位移值输出循环移位后的32位结果。例如: 输入向量00011000101000000000000000000000,方向左,位移值10,输出向量...
排列组合是常见的数学问题,本文就以完整实例形式讲述了C#实现排列组合算法的方法。分享给大家供大家参考之用。具体方法如下: 首先,数学中排列组合,可表示为:排列P(N,R) 其实排列实现了,组合也就实现了,组合...
该算法用来实现组合排列,并输出排列个数和排列结果!
设置淘宝直通车的关键词组合、请将排列项输入软件下txt文档
dfs易错点组合数的输出
图604 输出轴组合式皮带轮机构
NULL 博文链接:https://gaoquanyang.iteye.com/blog/1522697
这个功能非常方便。 考虑您希望使用不同功能分析数据的情况。 为此,您必须在应用的地方编写许多代码行数据的所有功能。 并且这个过程往往会为多个数据元素重复,并且具有不同的功能。 现在您可以应用您选择的任何...