2014找工笔试之睿初科技

来源:互联网 发布:可可英语软件 编辑:程序博客网 时间:2024/04/28 21:18

题目描述:

从自然数1,2,3,,,,M中任取N个数的所有组合,其中M>=N>=1

//M>=N>=1//输出1~M中所有N个数的组合#include <iostream>using namespace std;#define MAX 100int Array[MAX];void Combine(int m,int n){int i,j;for (i=m;i>=n;--i)//最高位的所有可能是从m到n{Array[n] = i;if (n>1){Combine(i-1,n-1);//从剩下的i-1个数中取n-1个数} else//当n==1时输出这个组合中的所有数{for (j=Array[0];j>0;--j)//Array[0]中存放了要取组合数的个数{                       //用Array[0]来保存组合数的个数,总感觉很奇怪,不知道有没有其它方法?cout<<Array[j]<<" ";}cout<<endl;}}}void main(){int M,N;cin>>M>>N;if (M<N){cout<<"Error: M<N"<<endl;} else{Array[0] = N;Combine(M,N);}system("pause");return ;}