组合以及可以重复的排列
2012-09-29 23:41
190 查看
#include<iostream.h> void fun(int m)//m的m次方,允许重复的全排列 { int *a=new int[m+1]; for(int i=0;i<=m;i++) a[i]=0; while(a[m]!=1) { for(int i=0;i<m;i++) cout<<a[i]<<" "; cout<<endl; for(int j=0;j<=m;j++) { a[j]+=1; if(a[j]>=m) a[j]=0; else break; } } delete []a; } int fun1(int N,int M)//组合 从N个数中取M个 { int *a=new int[M];//生成数组 int i,j,num=0; for(i=0;i<M;i++) a[i]=i+1; while(a[0]<=N-M) { for(i=0;i<M;i++) cout<<a[i]<<" "; cout<<endl; num++; int flag=false; for(j=M-1,i=0;j>=0;j--,i++) { a[j]+=1; if(a[j]<=N-i) { if(flag) { for(int k=j+1;k<M;k++) a[k]=a[k-1]+1; } break; } flag=true; } } for(i=0;i<M;i++) cout<<N-M+i+1<<" "; cout<<endl; num++; delete []a; return num; } int main() { cout<<fun1(7,7)<<endl; return 0; }
相关文章推荐
- JavaScript 排列组合算法 1、2、3、4、5、6、7 任意的排列组合不重复的 个数
- 给定一个字符串,找出其所有不重复的排列组合
- 递归求排列和组合(无重复和有重复)
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- 使用java实现数学中的排列组合公式A和C以及阶乘
- 33选6算法:M个数N个为一组,无重复的排列组合
- M个元素集合取出N个不重复排列组合
- 【组合+全排列】补充上篇【如何打印没有重复数字的自然数字列表?】
- 字符串的排列和组合(不考虑字符重复的情况)
- 输出4个整数(不重复)的所有排列组合
- javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- Java 实现m个数全排列组合以及从M中选取N个数(有序)
- JAVA实现组合、排列、重复排列(多层循环)
- 12个字母任选5个进行排列组合,不可重复 javascript 递归实现
- 递归求排列和组合(无重复和有重复)
- 蓝桥杯考试 递归:组合,无重复时候的组合的枚举以及计算总数
- python 生成排列、组合以及选择
- 不同的取法输出顺序可以不考虑。取字符( 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。)
- 123456数字组合排列(5个数组合不能重复)
- 回溯法解决 排列组合问题 全排 选排 可重复 不可重复