组合的C语言实现
2013-01-30 15:41
225 查看
int combine(int a[],int sub){ //a[1..?]表示候选集,sub表示一个排列(组合)的元素个数 { int total=sizeof(a); int order[sub+1]; int count=0;//符合条件的排列(组合)的个数 order[0]=-1; for(int i=1;i<=sub;i++) order[i]=i; int k=sub; bool flag=true; while(order[0]!=-1){ if(flag){ for(i=1;i<=sub;i++)//输出符合要求的组合 printf("%d ",a[order[i]]); printf("\n"); count++; flag=false; } order[k]++; if(order[k]==total+1){ order[k--]=0; continue; } //... //在此加入order[k]的限制条件 //如果条件满足,则往下执行 //否则continue; if(k<sub){ order[++k]=order[k-1]; continue; } if(k==sub) flag=true; } return count; }
相关文章推荐
- C语言实现数学上的组合和排列
- 排列与组合的C语言实现
- c语言实现排列组合算法问题
- 排列和组合的非递归算法的C语言实现
- C语言实现的排列组合问题的通用算法、解决方法
- 砝码组合问题用c语言实现
- c语言实现排列组合算法问题
- 排列组合与集合的C语言实现相关
- 用C语言如何编程实现从三个数组中各抽取几个数进行组合的问题?
- C语言实现的阶乘,排列和组合实例
- C语言实现数学上的组合和排列
- 关于用C语言简单实现组合
- 字符串排列、组合(C语言实现)
- 排列组合 C语言实现
- C语言实现全排列(部分算法参考网友,可实现重复字符的组合)
- C语言队列的实现--学习组合设计(一)
- c语言实现排列组合算法问题
- 组合的C语言实现
- 字符串的组合算法问题的C语言实现攻略
- C语言实现排列组合