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;
    }
    };

    截图:

  • 相关阅读:
    20188477 编程作业
    原型设计
    案例分析
    编程作业
    阅读任务
    准备工作
    原型设计作业
    案例分析作业
    编程作业
    阅读任务
  • 原文地址:https://www.cnblogs.com/w1500802028/p/7296475.html
Copyright © 2011-2022 走看看