Backtrace

发布时间 2023-08-18 22:08:53作者: 千心

占坑. Write it later.
It's nearly impossible to model algorithms by mathematics. We can only pursue progressive rigor(actually, maybe we cannot call it mathematics).
https://leetcode.com/problems/permutations/description/

Backtrace

class Solution {
public:
    vector<vector<int>> res;
    vector<int> permutation;

    void backtrace(bool decision[], vector<int>& nums)
    {
        if (permutation.size() == nums.size())
        {
            res.push_back(permutation);
        }
        else
        {
            for (int i = 0; i < nums.size(); ++i)
            {
                if (decision[i])    continue;
                permutation.push_back(nums[i]);
                decision[i] = true;
                backtrace(decision, nums);
                decision[i] = false;
                permutation.pop_back();
            }
        }
    }

    vector<vector<int>> permute(vector<int>& nums) {
        bool decision[nums.size()+1];
        backtrace(decision, nums);

        return res;
    }
};