46. Permutations

来源:互联网 发布:端口80被system占用 编辑:程序博客网 时间:2024/05/23 18:32
/*本算法思想是利用递归的方式实现数组的全排列,基本思想就是分别将数组中的每一个数字分别放在首位置,然后后面的数字进行递归的全排,直到首尾相遇,第一次全排结束,然后还原上一步,再全排*/class Solution {public:void Recursivepermute(vector<int>& nums, int start, int end, vector<vector<int>>&result){if (start == end)//首尾相遇时,证明一次全排结束,存入在结果数组;{result.push_back(nums);return;}else{for (int i = start; i <= end; i++)//从第一个数字开始,一次将每个数字放在首位置上;{swap(nums[i],nums[start]);Recursivepermute(nums, start + 1, end, result);swap(nums[i], nums[start]);//还原上一步完成全排之前的数组;以便进行下一次全排}}}    vector<vector<int>> permute(vector<int>& nums) {        vector<vector<int>>result;    Recursivepermute(nums, 0, nums.size() - 1, result);    return result;    }};

0 0