2.回溯算法-无重复数字的全排列
2021/8/22 20:06:26
本文主要是介绍2.回溯算法-无重复数字的全排列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
无重复数字的全排列
思路:回溯算法进行遍历,采用vis数组记录访问情况,防止后续加入的元素与之前的元素重复,当遍历到数组末尾时,加入新的排列到最终结果中。
输入:[1,2,3]
输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
初始 / | \ 1 2 3 / \ / \ / \ 2 3 1 3 1 2 | | | | | | 3 2 3 1 2 1
代码
class Solution { private: vector<int> perm; vector<vector<int>> ans; vector<bool> vis; public: void backtrac(vector<int>& nums, int index){ if(index == nums.size()){ ans.push_back(perm); return; } for(int i = 0; i < nums.size(); i++){ if(vis[i]){ continue; } vis[i] = true; perm.push_back(nums[i]); backtrac(nums, index + 1); vis[i] = false; perm.pop_back(); } } vector<vector<int>> permute(vector<int>& nums) { int n = nums.size(); vis.resize(n,0); backtrac(nums, 0); return ans; } };
这篇关于2.回溯算法-无重复数字的全排列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南