一、排列
定义:排列,一般地,从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(permutation)。特别地,当m=n时,这个排列被称作全排列(all permutation)。
根据定义可以看出排列是具有一定的顺序的
实现方式:
vector版:
//排列
#include<iostream>
#include<vector>
using namespace std;
void Permutation(vector<int> &a, vector<int> &b, int l){
//b用于临时存储结果。len(b)=len(a),l为左侧游标,初始值取0
int len = a.size();
if (l == len) {
for (int i=0;i<b.size();i++){
cout << b[i]<< ' ';
}
cout << endl;
return;
}
for (int i = l; i < len; i++){
b[l]= a[i];
swap(a[i], a[l]);
Permutation(a, b,l+1);
swap(a[i], a[l]);
}
}
int main()
{
int num[9]={1,2,3,4,5,6,7,8,9};
int n;
cin>>n; //选出n个数
vector<int> a(num,num+n),b(n);
Permutation(a,b,0);
return 0;
}
数组版:
#include<iostream>
using namespace std;
void Permutation(int *a,int *b,int size,int l){
if(l == size)
{
for(int i=0;i<l;i++)
{
cout<<*(b+i)<<" ";
}
cout<<endl;
return;
}
for(int i=l;i<size;i++)
{
int temp;
*(b+l)=*(a+i);
temp &#