zoukankan      html  css  js  c++  java
  • 全排列

    题目:给定一个数字列表,返回其所有可能的排列

    给出一个列表[1,2,3],其全排列为:

    [
      [1,2,3],
      [1,3,2],
      [2,1,3],
      [2,3,1],
      [3,1,2],
      [3,2,1]
    ]

    思路:nums=[1,2,3,4]求全排列,有四个位置,当第一个元素为1时,相当于求2,3,4的全排列,而在此排列中,当2为第一个元素时,相当于求3,4的全排列,又可以继续划分,3为第一个元素,4本身为一个全排列,

    代码:

    void per(vector<int> nums,int start,vector<vector<int> > &result){
    if(start==nums.size()-1){
    result.push_back(nums);
    }
    else{
    for(int i=start;i<nums.size();i++){
    swap(nums[start],nums[i]);
    per(nums,start+1,result);
    swap(nums[start],nums[i]);
    }
    }
    }

    class Solution {
    public:
    /**
    * @param nums: A list of integers.
    * @return: A list of permutations.
    */
    vector<vector<int> > permute(vector<int> nums) {
    // write your code here
    vector<vector<int> > result;
    if(nums.size()==0){
    result.push_back(nums);
    return result;
    }
    per(nums,0,result);
    return result;
    }
    };

    截图:

  • 相关阅读:
    Ethical Hacking
    Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    食物链 POJ
    Wireless Network POJ
    Candies POJ
    畅通工程再续 HDU
    Jungle Roads HDU
  • 原文地址:https://www.cnblogs.com/w1500802028/p/7296475.html
Copyright © 2011-2022 走看看