【C++】数组篇

全排列


先排序 → 循环生成下一个排列 → 全部存起来 → 完成全排列

3 个关键点

  1. 必须先排序 让数组变成最小顺序,next_permutation 才能生成所有排列。

  2. 用 do-while 循环 先存第一个排列,再不断生成下一个,不会漏掉。

  3. 核心函数 next_permutation 自动生成下一个排列,生成完返回 false,循环结束。

知识点

方法字典序法(next_permutation)

从最小顺序开始,不断找 "下一个稍微大一点" 的排列,直到找不到为止。

复制代码
vector<vector<int>> permute(vector<int>nums)
{
	//定义二维数组来存结果
	vector<vector<int>>res;
	
	//第一步先排序
	sort(nums.begin(), nums.end());
	//第二部
	//搞个do while循环,生成所有排列
	//排列函数 next_permutation
	do
	{
		res.push_back(nums);  //先把排序好的数组放进结果里
	} while (next_permutation(nums.begin(), nums.end()));
	//成功生成下一个排列 true 循环继续
	//已经是最后一个排列,返回false 循环结束

	return res;

}
相关推荐
平头哥技术团队6 小时前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
是个西兰花6 小时前
网络基础1
linux·网络·c++·智能路由器
统计学小王子6 小时前
数学建模国赛倒计时 2 天 ——《统计模型精讲(广义线性模型 R 语言实例 + 分析)》
开发语言·数学建模·r语言
此冬歌咏6 小时前
自动化服务器运维监控系统(python+shell)
linux·运维·服务器·开发语言·python·自动化
老赵的博客6 小时前
c++QT之动态库加载常见报错
c++·qt
wabs6666 小时前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
Cx330❀6 小时前
【Linux网络】深入TCP协议:从滑动窗口到拥塞控制与性能优化全景解析
linux·开发语言·网络·tcp/ip·ai·性能优化·ai编程
hetao17338376 小时前
2026-09-08 hetao1733837 的刷题记录
c++·算法
码匠许师傅6 小时前
【设计模式精讲】25.状态模式(State)
c++·ui·设计模式·状态模式·uml
“AI国潮设计-小江”6 小时前
【Python实战】SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc