问题描述
求从m个数中取r个数,(m、r都是大于0的正整数,且r<m<=15)。
输入格式:
第一行 m r
第二行 输入m个正整数
输出格式:
所有可能的组合的全排列。
【样例输入】:
3 2
1 2 3
【样例输出】:
3 2
2 3
3 1
1 3
2 1
1 2
参考代码
#include<iostream>
#include<cstring>
using namespace std;
#define MAX 15
int A[MAX],B[MAX];
int M,R;
void print(int A[],int n)
{
for(int i=0;i<n;i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
}
void swap(int A[],int p,int i)
{
int temp = A[p];
A[p] = A[i];
A[i] = temp;
}
void perm(int A[],int p,int q)
{
if(p==q)
{
print(A,q+1);
}
for(int i=p;i<=q;i++)
{
swap(A,p,i); //第一步:依次完成当