【C++】数组篇
2026/5/30 1:02:09 网站建设 项目流程

全排列

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询