Permutation--LeetCode 秒速五厘米 2022-08-07 11:45 132阅读 0赞 # 题目: # 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; }
还没有评论,来说两句吧...