题目:
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
,
and [3,2,1]
.
思路:对于一个数列,来查找这个数列的所有排列,那么让这个数列的任意一个元素都固定到第一个位置,然后求剩余的排列即可
#include <iostream>
#include <vector>
using namespace std;
/*
一个数组的排列
*/
void Permutation(vector<int>& vec,int begin,int end)
{
int i=0;
if(begin >= end)
{
for(i=0;i<vec.size();i++)
cout<<vec[i]<<" ";
cout<<endl;
return ;
}
for(i=begin;i<=end;i++)
{
swap(vec[begin],vec[i]);
Permutation(vec,begin+1,end);
swap(vec[begin],vec[i]);
}
}
int main()
{
vector<int> vec(3);
int i;
for(i=0;i<vec.size();i++)
vec[i] = i+1;
int pos =0;
Permutation(vec,pos,2);
return 0;
}