next_permution(),按照字典序进行排列组合,

括号里的参数为类似sort里面的参数,用法相同

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define Maxn 10
  4.  
  5. int main(){
  6. int a[3];
  7. a[0]=1;a[1]=2;a[2]=3;
  8. do{
  9. cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  10. }while (next_permutation(a,a+3)); //参数3指的是要进行排列的长度
  11. }//如果存在a之后的排列,就返回true。如果a是最后一个排列没有后继,返回false,每执行一次,a就变成它的后继

  

如果交换a[0],a[1],a[2]的大小,排列的次数会改变

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define Maxn 10
  4.  
  5. int main(){
  6. int a[3];
  7. a[0]=3;a[1]=2;a[2]=1;
  8. do{
  9. cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
  10. }while (next_permutation(a,a+3)); //参数3指的是要进行排列的长度
  11. }

  

例题(白书)p78,字母重排

输入一个字典(******结尾),然后输入若干单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(

不存在输出:(   )输入单词之间用空格或空行隔开,输入单词都不超过6个小写字母组成:

样例输入:

trap given score refund only trap work earn course pepper part
******

resco nfudre aptr sett oresuc

输出

score
refund
part trap trap
:(
course

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define Maxn 10
  4. char MAP[Maxn][Maxn];
  5. char AIM[Maxn][Maxn];
  6. int main(){
  7. string A;
  8. string B;
  9. string C;
  10. getline(cin,A);
  11. getline(cin,B);
  12. getchar();
  13. getline(cin,C);
  14. int j = 0;
  15. int k = 0;
  16. for( int i = 0; i < A.length(); i++ ){
  17. if(A[i] == ' '){
  18. MAP[k][j] = '\0';
  19. k++;
  20. j = 0;
  21. }else{
  22. MAP[k][j] = A[i];
  23. j++;
  24. }
  25. }
  26. MAP[k++][j] = '\0';
  27. set<string>s;
  28. for(int i = 0; i < k; i++){
  29. s.insert(MAP[i]);
  30. }
  31. int y = 0;
  32. int t = 0;
  33. for( int i = 0; i < C.length(); i++ ){
  34. if(C[i] == ' '){
  35. AIM[y][t++] = '\0';
  36. y++;
  37. t = 0;
  38. }else{
  39. AIM[y][t] = C[i];
  40. t++;
  41. }
  42. }
  43. AIM[y++][t] = '\0';
  44. int cnt = 0;
  45. for(int i = 0; i < y; i++){
  46. sort(AIM[i],AIM[i] + strlen(AIM[i]));
  47. bool flag = true;
  48. do{
  49. for(int j = 0; j < k; j++){
  50. if(strcmp(AIM[i],MAP[j]) == 0){
  51. flag = false;
  52. cout << AIM[i] << " ";
  53. }
  54. }
  55. }while( next_permutation(AIM[i],AIM[i] + strlen(AIM[i]) ) );//全排列
  56. if(flag){
  57. cout << ":(";
  58. }
  59. cout << endl;
  60. }
  61. }

  

排列组合函数next_permutation()的更多相关文章

  1. python自带的排列组合函数

    需求: 在你的面前有一个n阶的台阶,你一步只能上1级或者2级,请计算出你可以采用多少种不同的方法爬完这个楼梯?输入一个正整数表示这个台阶的级数,输出一个正整数表示有多少种方法爬完这个楼梯. 分析:提炼 ...

  2. python内置函数-排列组合函数

    product 笛卡尔积 (有放回抽样排列) permutations 排列 (不放回抽样排列) combinations 组合,没有重复 (不放回抽样组合) combinations_with_re ...

  3. php 排列组合函数(无重复组合,可重复组合【全排列组合】)

    <?php /** * 无重复排列組合 * @Author MAX * @DateTime 2018-09-07T16:28:40+0800 * @param Array $arr 需要排列組合 ...

  4. R语言学习笔记:choose、factorial、combn排列组合函数

    一.总结 组合数:choose(n,k) —— 从n个中选出k个 阶乘:factorial(k) —— k! 排列数:choose(n,k) * factorial(k) 幂:^ 余数:%% 整数商: ...

  5. HDOJ 1716 排列2(next_permutation函数)

    Problem Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡 ...

  6. nyoj19(排列组合next_permutation(s.begin(),s.end()))

    题目意思: 从n个数中选择m个数,按字典序输出其排列. pid=19">http://acm.nyist.net/JudgeOnline/problem.php?pid=19 例: 输 ...

  7. C++ STL next_permutation(快速排列组合)

    排列组合必备!! https://blog.csdn.net/bengshakalakaka/article/details/78515480

  8. ACM~排列组合&amp;&amp;hdu例子

    排列组合是数学中的一个分支.在计算机编程方面也有非常多的应用,主要有排列公式和组合公式.错排公式.母函数.Catalan Number(卡特兰数)等. 一.有关组合数学的公式 1.排列公式   P(n ...

  9. C++全排列函数next_permutation()和prev_permutation()

    头文件:#include<algorithm> * * * 1. next_permutation(): next_permutation()函数的返回类型是bool类型. 即:如果有一个 ...

随机推荐

  1. CI源码学习 一步一步重写 CodeIgniter 框架

    文章:http://www.cnblogs.com/zhenyu-whu/archive/2013/08.html

  2. python学习--string

    1\string are immutable, which means you can't change an existing string. >>>greeting = 'Hel ...

  3. 【C语言】37个关键字

    C语言37个关键字 一.相关基础知识 年. 关键字:是由系统定义的,不能重新做其他定义的字符,且每个关键字已经赋予了不同的意义,让编程者能够使用来告诉编译器完成不同的工作PS:C语言严格区分大小写,i ...

  4. iOS开发之iOS程序偏好设置(Settings Bundle)的使用

    目录[-] 1.添加设置项 2.设置的控件 3.编辑设置项的文件 4.在程序中获取Settings 和写入Settings 添加UI 5.实现读取设置和保存代码 在Android手机上, 在某个程序里 ...

  5. Android Camera 预览图像被拉伸变形的解决方法【转】

    问题描述: 预览图像被拉伸变形 问题原因: 由于预览图像大小跟SurfaceView 大小不一致引起 解决方法: 获取系统支持的所有预览尺寸[getSupportedPictureSizes],然后再 ...

  6. Pentaho Data Integration (二) Spoon

    上一篇:Pentaho Data Integration笔记 (一):安装 介绍 Spoon Intoduction site: http://wiki.pentaho.com/display/EAI ...

  7. Spring 3整合Quartz 1实现定时任务一:常规整合(基于maven构建)

    Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类 ...

  8. hdu 4435

    一道枚举+搜索题: 很容易看出这道题目要求尽量不在大的城市里面建加油站: 所以从最大的城市开始枚举! 代码: #include<cstdio> #include<cmath> ...

  9. PYTHON小CASE

    import os import time source = ['C:\\py\\', 'C:\\work\\'] target_dir = 'C:\\backup' today = target_d ...

  10. 李洪强iOS开发Swift篇—09_属性

    李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...