排列组合算法

简介: 排列组合算法

主要是两个函数

第一个: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种情况

相关文章
|
5月前
|
算法 索引 Python
使用Python基础与蒙特卡洛算法实现排列组合
使用Python基础与蒙特卡洛算法实现排列组合
108 0
|
5月前
|
移动开发 算法 Python
Python能实现排列组合算法吗?
Python能实现排列组合算法吗?
71 0
|
机器学习/深度学习 存储 边缘计算
转:排列组合公式算法在局域网监控软件中的技术趋势与未来发展
排列组合公式是组合数学中的一种计算方法,用于确定给定集合中元素的不同排列和组合的数量。在局域网监控软件中,排列组合公式可以应用于一些特定的场景,如网络中的用户组合、权限管理、资源分配等方面。
93 0
|
存储 算法 C++
【C/C++练习】经典的排列组合问题(回溯算法)——电话号码的字母组合
【C/C++练习】经典的排列组合问题(回溯算法)——电话号码的字母组合
117 0
|
算法 搜索推荐 UED
转:说说排列组合算法在文档管理系统中的应用优势
在现代信息时代,随着数据量的不断增长,文档管理系统变得超级重要!就是在这样的背景下,排列组合算法展现出了在文档管理系统中的多种应用优势。这可是对于提高系统的效率和用户体验来说,简直太关键了!
60 0
|
机器学习/深度学习 存储 监控
转:排列组合算法在监控软件中的优势、复杂性与应用场景
排列组合算法在监控软件中可能用于处理一些组合与排列问题,例如处理多个元素的组合方式或排列顺序。它在一些特定场景下具有一定的优势和适用性,但也要注意其复杂性。
92 0
|
机器学习/深度学习 算法 Python
转:排列组合算法Python的代码示例
排列组合算法是计算机科学中用来计算从一个集合中选取元素的不同方案数的算法。它可以计算出从n个元素中选取k个元素的不同方案数,也就是组合数C(n, k)。排列组合算法也可以用来计算全排列数,也就是n个元素的全排列数为A(n, n)。
210 0
|
算法 前端开发 iOS开发
前端电商 sku 的全排列算法很难吗?学会这个套路,彻底掌握排列组合
前段时间在掘金看到一个热帖 《今天又懒得加班了,能写出这两个算法吗?带你去电商公司写商品中心》,里面提到了一个比较有意思故事,大意就是一个看似比较简单的电商 sku 的全排列组合算法,但是却有好多人没能顺利写出来。有一个毕业生小伙子在面试的时候给出了思路,但是进去以后还是没写出来,羞愧跑路~
|
算法 C语言
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
14【C语言 & 趣味算法】三色球问题(数学中 基础的 排列组合 问题)
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。