70,020
社区成员




#include<iostream>
using namespace std;
void main()
{
void combination( int m, int n, int start= 1, int deep= 0);
void permutation( int m, int deep= 0);
int m,n;
cin >>m >>n;
combination( m, n);
cin >>m;
permutation( m);
}
void permutation( int m, int deep= 0)//排列
{
static int Array[1000];
static bool Flag[1000];
if ( deep == m) //递归结束判断
{
for( int i= 0; i< deep; i++)
cout<< Array[i];
cout<< " ";
return ;
}
for (int i= 1; i <=m ;i++)
{
if( Flag[i]== true)
continue; //该数用过不用
Array[deep]= i;
Flag[i]= true;
permutation( m, deep+1);
Flag[i]= false;
}
if( deep == 0) //递归程序最终结束时换行
cout<< endl;
}
void combination( int m, int n, int start= 1, int deep= 0)//组合
{
static int Array[1000];
if( n == 0) //递归结束判断
{
for( int i= 0; i < deep; i++) //输出
cout<< Array[i];
cout<< " ";
return; //跳出递归
}
for( int i= start; i <= m-n+1; i++)
{
Array[deep]= i;
combination( m, n-1, i+1, deep+1);
}
if( deep == 0)//递归程序最终结束时换行
cout<< endl;
}