【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;

}
相关推荐
REDcker4 分钟前
Android 15 16KB 内存页适配详解
android·开发语言·python
2zcode4 分钟前
基于MATLAB同态滤波的医学图像增强系统设计与实现
开发语言·计算机视觉·matlab
脏脏a4 分钟前
飞牛NAS部署EasyNVR实操:摄像头RTSP接入、本地录像与公网回看
开发语言·php
杰佛史彦明118 分钟前
PDF 表格转 CSV:Python 实现方法与代码解析
开发语言·python·pdf
gugucoding23 分钟前
39. 【C语言】经典 C 项目实战:迷你 HTTP 服务器
c语言·开发语言·http
什巳32 分钟前
JAVA练习277- 找到字符串中所有字母异位
java·开发语言·算法·leetcode
头茬韭菜43 分钟前
3.6 依赖注入 — 四个依赖的精准边界
开发语言·ai·ecmascript
zmzb01031 小时前
C++课后习题训练记录Day154
数据结构·c++·算法
江华森1 小时前
Python神经网络编程(四):Python从零搭建神经网络
开发语言·python·神经网络
Helen_cai2 小时前
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构)
开发语言·华为·php·harmonyos