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

tap自助建站友情链接代码模板

tap自助建站,友情链接代码模板,功能型网站建设,正规的网站建设官网学习算法时发现可以使用next_permutation函数来替代手写起到一个全排序的作用。 函数原型 函数定义在<algorithm>头文件中&#xff0c;用于生成给定序列的下一个字典序排列&#xff08;如果不理解该概念先学习一下字典序的概念&#xff09; bool next_permutation( Bid…

学习算法时发现可以使用next_permutation函数来替代手写起到一个全排序的作用。

函数原型

函数定义在<algorithm>头文件中,用于生成给定序列的下一个字典序排列(如果不理解该概念先学习一下字典序的概念)

bool next_permutation( BidirectionalIterator first, BidirectionalIterator last );

参数

  • first: 指向序列起始位置的双向迭代器。
  • last: 指向序列结束位置的双向迭代器(不包含在序列中)。

返回值

  • 如果成功生成下一个排列,返回 true
  • 如果当前序列已经是字典序中的最大排列(即降序排列),则返回false,并将序列重新排列为升序。

示例

使用next_permutation进行全排列并输出结果

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main() 
{vector<int> nums = {1, 2, 3};sort(nums.begin(), nums.end()); // 确保从最小的排列开始do {for (int num : nums) {cout << num << " ";}cout << endl;} while (next_permutation(nums.begin(), nums.end()));return 0;
}

输出:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

原理

  1. 从右向左找到第一个升序对 (i, i+1),即 nums[i] < nums[i+1]。
  2. 再次从右向左找到第一个大于 nums[i] 的元素 nums[j]。
  3. 交换 nums[i] 和 nums[j]。
  4. 反转 i+1 到末尾的子序列。(为了将降序子序列变为升序子序列,从而确保生成的排列是字典序中的下一个排列)
http://www.dtcms.com/wzjs/298059.html

相关文章:

  • 市网站制作培训网
  • 中建装饰集团有限公司官网seo sem推广
  • 做网站页面用什么武汉seo认可搜点网络
  • 济南做网站 推荐行知科技自己如何做链接推广
  • 怎么做同城购物网站百度推广登录平台网址
  • 网站做备案关停会显示什么网站推广的10种方法
  • 政府软件开发报价明细陕西网站seo
  • 通辽大柒网站建设有限公司百度指数的作用
  • 广东外贸网站建设如何免费制作自己的网站
  • 门户网站建设服务收费网络营销推广方式包括
  • 网站建设公司效益怎么样网址大全浏览器主页
  • 做图素材网站开哪个vip好色盲测试图片60张
  • 建设厅网站能打开为什么不能办理郑州seo优化顾问热狗
  • 做招聘网站都需要什么手续seo推广一年要多少钱
  • 建设网站功能定位站长工具爱情岛
  • jsp网站开发四 酷 全书源码91关键词
  • 上海策朋网站设计公司店铺运营
  • 沈阳做网站优化的公司哪家好下载微信
  • 移动端网站开发框架优化品牌seo关键词
  • 几百元做网站seo服务建议
  • 网站建设h5是指的那一块怎么查百度竞价关键词价格
  • 南宁网站seo推广优化公司今日国际新闻10条
  • 镇江网站建设推广找思创北京建站公司
  • vi设计全套价格外贸网站如何推广优化
  • 设计网站需要多少钱小说推广平台有哪些
  • 中山网站模板营销策划方案1000例
  • 网站建设公司固定ip谷歌paypal官网入口
  • 房产网站有哪些淘宝关键词优化软件
  • 如何添加wordpress主题陕西优化疫情防控措施
  • 温江网站开发百度一下手机版首页