zoukankan      html  css  js  c++  java
  • Permutations

    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].

    思路:这题数组的全排列,我们使用分而治之的。将数组分成两部分:第一部分为首元素,第二部分为剩下的元素。总体来说,两步走:首先求所有可能出现第一个位置的元素,即把第一个元素和后面所有的元素交换,求后面所有元素的排列。这个时候我们仍把后面的所有元素分成两部分:后面元素的第一个元素,以及这个元素后面的所有元素。然后把第一个元素逐一和它后面的字符交换。其实使用典型的递归思路。、

    class Solution {
    private:
        vector<vector<int> > result;
    public:
        void Permutation(vector<int> &num,int index)
        {
            if(index==num.size())
                result.push_back(num);
            else
            {
                for(int i=index;i<num.size();i++)
                {
                    int temp=num[i];
                    num[i]=num[index];
                    num[index]=temp;
                    Permutation(num,index+1);
                    temp=num[i];
                    num[i]=num[index];
                    num[index]=temp;
                }
            }
        }
        vector<vector<int> > permute(vector<int> &num) {
            Permutation(num,0);
            return result;
        }
    };
  • 相关阅读:
    JS站点
    1011 World Cup Betting (20分)
    1007 Maximum Subsequence Sum (25分)(动态规划DP)
    1006 Sign In and Sign Out (25分)
    1005 Spell It Right (20分)
    1004 Counting Leaves (30分)(DFS)
    1003 Emergency (25分)(Dijkstra算法)
    1002 A+B for Polynomials (25分)
    1001 A+B Format (20分)
    canvas
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3612828.html
Copyright © 2011-2022 走看看