给定一个数组a[N],求下一个数组.

2 1 3 4

2 1 4 3

2 3 1 4

2 3 4 1

.....

在STL中就有这个函数:

1.参数是(数组的第一个元素,数组的末尾),注意这是前闭后开区间,(a,a+n)

2.返回值是bool型,表示这个数组是不是最后一个元素.

3.这个函数不仅可以实现n个互异的数的全排列,也能够生成组合数.如1 2  3 3 4 4 5 6 6这样数组的全排列.

4.第一个数组是升序排列,最后一个数组是降序排列.

    ,,,};
    do{
        re(i, )cout << a[i] << " ";
        puts("");
    } ));

那么这个函数内部是如何实现的呢?

bool next(int*a, int sz){
    ;
     && a[i] <= a[i - ])i--;
    )return false;
    ;
    ;
    while (j > i)swap(a[j--], a[i++]);
    i = pos + ;
    while (a[i] <= a[pos])i++;
    swap(a[i], a[pos]);
    return true;
}
int main(){
    ,,,};
    do{
        re(i, )cout << a[i] << " ";
        puts("");
    } ));
    ;
}

输出一共12项.

最新文章

  1. Shell入门教程:流程控制(6)while 循环
  2. C++函数重载和函数模板
  3. Financial Management[POJ1004]
  4. B2B多商铺初期权限数据库设计
  5. linux设备驱动归纳总结(十):1.udev&amp;misc【转】
  6. Bash脚本15分钟进阶教程
  7. Learning Java language Fundamentals
  8. Windows 下启动Apache服务(转)
  9. JavaScript不可变原始值和可变的对象引用
  10. Hive 7、Hive 的内表、外表、分区(22)
  11. Mybatis --- 映射文件、参数处理、参数值的获取、select元素
  12. Adobe Acrobat pro生成PDF模版
  13. BZOJ3529: [Sdoi2014]数表
  14. Java进阶(二十三)java中long类型转换为int类型
  15. Spring MVC(三)控制器获取页面请求参数以及将控制器数据传递给页面和实现重定向的方式
  16. qqluxc
  17. [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.1 引言
  18. 微信企业号-根据code获取成员信息(过期code)
  19. python 根据字符串内数字排序
  20. Linux下查/删/替 命令(转)

热门文章

  1. 元组tuple
  2. Js 关于console 在IE 下的兼容问题
  3. unordered容器
  4. C 结构体位域
  5. ADO.NET防止字符串攻击方法
  6. ADO.Net 增、删、改、查(基本项)
  7. MySQL 基础语句的练习
  8. HTML 学习笔记(链接)
  9. JavaScript Math 对象
  10. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序