排列组合算法

简介: 排列组合算法

主要是两个函数

第一个:next_permutation 下一个序列

第二个:prev_permutation 上一个序列

next_permutation(下一个序列)

如果说 有{1, 2, 3},那么它的下一个序列就是{1, 3, 2}

其实也就是相当于数学中的排列组合

#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main()
{
  //1.下一个序列
  vector<int> v1 = { 1, 2 ,3 };
  next_permutation(v1.begin(), v1.end());
  for (auto& v : v1)
  {
    cout << v << " ";
  }
  cout << endl;
  vector<int> v2 = { 1, 2, 3, 4 };
  int index = 0;
  cout << "升序" << endl;
  while (next_permutation(v2.begin(), v2.end()))
  {
    index++;
    cout << "第" << index + 1 << "个序列" << endl;
    copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
  }
  return 0;
}

prev_permutation(上一个序列)

跟那个next_permutation是相反的,如果有{3, 2 , 1},那么它的上一序列就是{3, 1, 2}

#include<iostream>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main()
{
  //1.下一个序列
  vector<int> v1 = {3, 2, 1};
  prev_permutation(v1.begin(), v1.end());
  for (auto& v : v1)
  {
    cout << v << " ";
  }
  cout << endl;
  vector<int> v2 = {4, 3, 2, 1};
  int index = 0;
  cout << "降序" << endl;
  while (prev_permutation(v2.begin(), v2.end()))
  {
    index++;
    cout << "第" << index + 1 << "个序列" << endl;
    copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
  }
  return 0;
}

其实也当于数学中的排列组合,用数学公式算A(4 4)的全排列,也是24种情况

相关文章
|
6月前
|
算法 索引 Python
使用Python基础与蒙特卡洛算法实现排列组合
使用Python基础与蒙特卡洛算法实现排列组合
115 0
|
6月前
|
移动开发 算法 Python
Python能实现排列组合算法吗?
Python能实现排列组合算法吗?
83 0
|
机器学习/深度学习 存储 边缘计算
转:排列组合公式算法在局域网监控软件中的技术趋势与未来发展
排列组合公式是组合数学中的一种计算方法,用于确定给定集合中元素的不同排列和组合的数量。在局域网监控软件中,排列组合公式可以应用于一些特定的场景,如网络中的用户组合、权限管理、资源分配等方面。
95 0
|
存储 算法 C++
【C/C++练习】经典的排列组合问题(回溯算法)——电话号码的字母组合
【C/C++练习】经典的排列组合问题(回溯算法)——电话号码的字母组合
134 0
|
算法 搜索推荐 UED
转:说说排列组合算法在文档管理系统中的应用优势
在现代信息时代,随着数据量的不断增长,文档管理系统变得超级重要!就是在这样的背景下,排列组合算法展现出了在文档管理系统中的多种应用优势。这可是对于提高系统的效率和用户体验来说,简直太关键了!
63 0
|
机器学习/深度学习 存储 监控
转:排列组合算法在监控软件中的优势、复杂性与应用场景
排列组合算法在监控软件中可能用于处理一些组合与排列问题,例如处理多个元素的组合方式或排列顺序。它在一些特定场景下具有一定的优势和适用性,但也要注意其复杂性。
96 0
|
机器学习/深度学习 算法 Python
转:排列组合算法Python的代码示例
排列组合算法是计算机科学中用来计算从一个集合中选取元素的不同方案数的算法。它可以计算出从n个元素中选取k个元素的不同方案数,也就是组合数C(n, k)。排列组合算法也可以用来计算全排列数,也就是n个元素的全排列数为A(n, n)。
215 0
|
算法 前端开发 iOS开发
前端电商 sku 的全排列算法很难吗?学会这个套路,彻底掌握排列组合
前段时间在掘金看到一个热帖 《今天又懒得加班了,能写出这两个算法吗?带你去电商公司写商品中心》,里面提到了一个比较有意思故事,大意就是一个看似比较简单的电商 sku 的全排列组合算法,但是却有好多人没能顺利写出来。有一个毕业生小伙子在面试的时候给出了思路,但是进去以后还是没写出来,羞愧跑路~
|
算法 C语言
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
|
13天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。