在STL中,用来计算排列组合的函数有 next_permutation() 和 prev_permutation() ,包含在头文件#include <algorithm>。前者是求出下一个排列组合,而后者是求出上一个排列组合。所谓“下一个”和“上一个”,书中举了一个简单的例子:对序列 {a, b, c},每一个元素都比后面的小,按照字典序列,固定a之后,a比bc都小,c比b大,它的下一个序列即为{a, c, b},而{a, c, b}的上一个序列即为{a, b, c},同理可以推出所有的六个序列为:{a, b, c}、{a, c, b}、{b, a, c}、{b, c, a}、{c, a, b}、{c, b, a},其中{a, b, c}没有上一个元素,{c, b, a}没有下一个元素。

他们的使用方法如下:

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;int main(){
FILE *fin, *fout;
fin = stdin;
fout = stdout;
fout = fopen("permutationout.txt", "wb");
int d[]={1,2,3,4,5,6,7,8,9};//!
do{
int a=d[0]*100+d[1]*10+d[2];
int b=d[3]*100+d[4]*10+d[5];
int c=d[6]*100+d[7]*10+d[8];
if(c==3*a && b==2*a) fprintf(fout, "%d %d %d\n", a, b, c);
}while(next_permutation(d,d+9));//!int d[]={9,8,7,6,5,4,3,2,1};//!
do{
int a=d[0]*100+d[1]*10+d[2];
int b=d[3]*100+d[4]*10+d[5];
int c=d[6]*100+d[7]*10+d[8];
if(c==3*a && b==2*a) fprintf(fout, "%d %d %d\n", a, b, c);
}while(prev_permutation(d,d+9));//!
fclose(fout);
return 0;
}

排列(permutation)2_6相关推荐

  1. [Swift]LeetCode60. 第k个排列 | Permutation Sequence

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  2. 翻译:组合和排列Combination and Permutation

    有什么不同? 在英语中,我们松散地使用"组合"这个词,没有考虑事物的顺序是否重要.换句话说: "我的水果沙拉是苹果.葡萄和香蕉的组合"我们不在乎水果的顺序,它们 ...

  3. 深入浅出统计学 第六章 排列与组合

    内容简介 本章内容主要介绍了两个基本概念,排序与组合 其中组合是之后计算二项分布的预备知识 对于计算而言,重点在于理解其所适应的不同情况,并记忆公式. 两者区别(P261): 1. 排列与顺序有关 2 ...

  4. 从n个不同元素中取出m个元素排列组合

    01. 问题 问题01. 算法: 从n个不同元素中取出m个元素的排列数是多少? 这些排列分别是什么? (其中: n > 0; 0 < m ≤ n;) 问题02. 算法: 从n个不同元素中取 ...

  5. R语言【基本计数原理与技巧——阶乘、组合、排列】

    加法原理定义:做一件事有n种方法,第一类有m1m_1m1​种方法,第二类有m2m_2m2​种方法,-第n类有mnm_nmn​种方法,完成这件事共有m1m_1m1​+m2m_2m2​+-+mnm_nmn ...

  6. NLP重大突破?一文读懂XLNet“屠榜”背后的原理

    作者 | 李理 原文链接:https://fancyerii.github.io/2019/06/30/xlnet-theory/ 本文介绍XLNet的基本原理,读者阅读前需要了解BERT等相关模型, ...

  7. 微生物相关网络构建教程:MENA, LSA, SparCC和CoNet

    点击上方蓝色「宏基因组」关注我们!专业干货每日推送! 原文为自自Microbial association network construction tutorial http://psbweb05. ...

  8. 微生物相关网络构建教程中文Microbial association network construction tutorial

    原文为自Microbial association network construction tutorial http://psbweb05.psb.ugent.be/conet/microbial ...

  9. 失败 安装scikit_scikit-learn0.22版本最新发布

    搞机器学习的应该没有人不知道scikit-learn吧,这个在ML中使用非常频繁的库在昨天已经发布了它最新版本0.22了. scikit-learn 0.22的发布,其中包含许多错误修复和新功能!我们 ...

最新文章

  1. 关于libnmap 的一些应用
  2. HTML5 Canvas动画效果实现原理
  3. [IIS] [PHP] 500.19 随机出现
  4. JVM 的 工作原理,层次结构 以及 GC工作原理
  5. linux学习笔记-第六课-/etc/passwd,/etc/shadow,useradd,su,sudo等
  6. 创建Sonarqube项目
  7. 美团容器平台架构及容器技术实践
  8. php跳转图片_HTML点击图片跳转到新页面怎么实现?(示例)
  9. C语言关键字详解(五)带你全面了解 volatile 关键字
  10. 亲测可用:推荐一个免费下载外文文献的网站
  11. 【ROS】编译软件包packages遇到进度缓慢或卡死,使用swap
  12. linux云主机登陆教程,登录linux云服务器的详情步骤
  13. CF1143F/1142C U2
  14. Microsoft Visio 2010 - 编辑属性值
  15. 用金字塔原则思考与表达
  16. php书籍免费下载,《坐即瘦》_坐即瘦_NEWS下载网
  17. 本地主机如何访问虚拟主机服务器
  18. nTrun(快速启动软件) V2.0.1 简体中文绿色版是什么
  19. python输出方格_使用Python实现LBM(格子法)方腔驱动流
  20. html-----------------------

热门文章

  1. 黄聪:C# webBrowser控件禁用alert,confirm之类的弹窗解决方案
  2. python精简笔记(五)——函数式编程
  3. LR监测windows资源一般监测哪几个项?
  4. 8种最有可能在2016年倒闭的光伏企业
  5. mysql AB 的基本搭建
  6. shell编程——sed用法
  7. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B. Little Artem and Grasshopper 模拟题...
  8. ip别名删除第一个,其余别名就自动删除的分析
  9. Windows Server 2008 和 Windows Vista 结合的功能更加强大
  10. 基于知识图谱、认知推理、逻辑表达的认知图谱,则被越来越多的国内外学者和产业领袖认为是 “目前可以突破这一技术瓶颈的可行解决方案之一