组合C(m,n)

#include<iostream.h>
int fun(int n,int m){
	int s1=1,s2=1,s3=0,i,j;
	for(i=0;i<m;i++){
		s1*=n--;
	}
	for(j=m;j>=1;j--){
		s2*=m--;
	}
	s3=s1/s2;
	return s1/s2;
}
void main(){
	int s=0,i,j,k,g=0,a[10]={0},b[20]={1,2,3,4,5,6,7,8,9,10,11,12},m=6,n=12;
	i=1;
	a[i]=1;
	while(1){
		if(i<m){
			i++;
			a[i]=a[i-1]+1;
		}
		if(i==m&&a[i]<n){
			for(j=1;j<=m;j++){
				cout<<b[a[j]-1]<<" ";
			}
			cout<<endl;
			s++;
			a[i]++;
		}
	
		if(a[i]==n){
			for(int j=1;j<=m;j++){
				cout<<b[a[j]-1]<<" "; 
			}
			cout<<endl;
			s++;
		}
		if(s==fun(n,m)){
			cout<<"Total:"<<fun(n,m)<<endl;
			break;
		}
		while(i==m&&a[i]==n){
			i--;
			while(a[i]==n-(m-i))
				i--;
			a[i]++;
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值