全排列

作者: 1哥 | 来源:发表于2023-08-19 23:48 被阅读0次
image.png

要点:
回溯法模版
组合问题:使用startIndex, for循环每层从startIndex开始 标识为skip 重复的路径;
排列问题:使用used 数组记录使用情况,for循环每层从0开始,根据used 标识为skip 选择

/*
 *数据结构
 */
void backtracking(vector<int>& nums)
{
  if (中止条件){
    保存结构
    return;
  }

  int i;
  for(i=0; i<nums.size();i++){
    if(used[i]) continue;

    used[i]=true;
    path.push_back(nums[i]);
    backtracking(nums);
    path.pop_back();
    used[i]=false;

  }

}
class Solution {
public:
    vector<int > path;
    vector<vector<int>> result;
    
    void backtracking(vector<int>& nums, vector<bool>& used)
    {
        if (path.size() == nums.size()) {
            result.push_back(path);
            return;
        }

        for(int i=0; i< nums.size(); i++ ) {
            if (used[i]) continue;

            used[i] = true;
            path.push_back(nums[i]);
            backtracking(nums, used);
            path.pop_back();
            used[i] = false;
        }
    }

    vector<vector<int>> permute(vector<int>& nums) {

        vector<bool > used(nums.size(), false);
        backtracking(nums, used);
        return result;
    }
};

相关文章

  • 全排列与字典序

    全排列 递归实现全排列; 首先来说递归算法实现全排列: 例如,对于{1,2,3,4}的例子进行全排列,其可以分解...

  • 全排列

    求全排列最简单的就是递归了123 的全排列共有 6 个, 123 的全排列等于以 1 开头 23 的全排列, 加上...

  • 全排列

    题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排...

  • 全排列

    递归的版本image.png

  • 全排列

  • 全排列

  • 全排列

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

  • 全排列

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

  • 全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出:[[1,2,3],[1,...

  • 全排列

    两种方法:第一种方法:递归: 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递...

网友评论

      本文标题:全排列

      本文链接:https://www.haomeiwen.com/subject/clqsmdtx.html