当前位置: 首页 > news >正文

C++简洁版全排列代码

《代码随想录》在回溯章节中的全排列代码模板较为复杂,其实还有一种常用写法,思路是交换元素位置后做dfs(),并回溯。对应leetcode46题。

class Solution {
public:vector<vector<int>> res;void dfs(vector<int>num, int k){// k代表换到哪个下标了:如果为size,则表明都换过了if (k == num.size()){vector<int> path;for (int i = 0; i < k; i++)path.push_back(num[i]);res.push_back(path);return;}for (int i = k; i < num.size(); i++){{int t = num[i]; num[i] = num[k]; num[k] = t; }dfs(num, k + 1);{int t = num[i]; num[i] = num[k]; num[k] = t; }}}vector<vector<int>> permute(vector<int>& nums) {dfs(nums, 0);return res;}
};

简单对比全排列和组合的dfs模板的区别:
两者均使用dfs和回溯的思想

  1. 全排列和组合的主要区别是全排列的回溯部分是交换,组合的回溯部分是对路径做push()和pop()。
  2. 组合的数量需要有参数或变量限制选取个数,而全排列一定到达末尾,参数使用较少。

相关文章:

  • 微服务如何做好监控
  • 什么是容器?
  • SpringBootWeb 篇-深入了解 Mybatis 删除、新增、更新、查询的基础操作与 SQL 预编译解决 SQL 注入问题
  • uniapp集成websocket不断线的处理-打牌记账
  • 实战:生成个性化词云的Python实践【7个案例】
  • 六种常用设计模式
  • QT状态机10-QKeyEventTransition和QMouseEventTransition的使用
  • 海外仓储管理系统:提升效率,标准化海外仓管理,科技赋能业务
  • 学习Uni-app开发小程序Day17
  • 前端请求超时截断,axios timeout设置未生效情况记录
  • k8s笔记 | helm包管理
  • Spring 事务源码分析
  • Docker配置国内镜像源
  • 匿名内部类(重点)
  • Linux磁盘高级操作
  • 3.7、@ResponseBody 和 @RestController
  • CentOS从零开始部署Nodejs项目
  • eclipse的离线汉化
  • Git初体验
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript的使用你知道几种?(上)
  • nginx 负载服务器优化
  • web标准化(下)
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于遗传算法的优化问题求解
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 使用API自动生成工具优化前端工作流
  • 微信公众号开发小记——5.python微信红包
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 如何正确理解,内页权重高于首页?
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $GOPATH/go.mod exists but should not goland
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (转)程序员疫苗:代码注入
  • (转)重识new
  • .gitignore文件—git忽略文件
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET CLR基本术语
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .NET学习全景图
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @AutoConfigurationPackage的使用
  • @ConditionalOnProperty注解使用说明
  • @Mapper作用
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [8-27]正则表达式、扩展表达式以及相关实战