给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列。例如:S = “1312”,
输出为:

1123
1132
1213
1231
1312
1321
2113
2131
2311
3112
3121
3211
Input
输入一个字符串S(S的长度 <= 9,且只包括0 - 9的阿拉伯数字)
Output
输出S所包含的字符组成的所有排列
Input示例
1312
Output示例
1123
1132
1213
1231
1312
1321
2113
2131
2311
3112
3121
3211

说一下 STL:
STL 容器是一些模板类,提供了多种组织数据的常用方法,例如vector(向量,类似于数组)、list(列表,类似于链表)、deque(双向队列)、set(集合)、map(映象)、stack(栈)、queue(队列)、priority_queue(优先队列)等,通过模板的参数我们可以指定容器中的元素类型。
STL 算法是一些模板函数,提供了相当多的有用算法和操作,从简单如for_each(遍历)到复杂如stable_sort(稳定排序)。
STL 迭代器是对C 中的指针的一般化,用来将算法和容器联系起来。几乎所有的STL 算法都是通过迭代器来存取元素序列进行工作的,而STL 中的每一个容器也都定义了其本身所专有的迭代器,用以存取容器中的元素。有趣的是,普通的指针也可以像迭代器一样工作。 熟悉了STL 后,你会发现,很多功能只需要用短短的几行就可以实现了。通过STL,我们可以构造出优雅而且高效的代码,甚至比你自己手工实现的代码效果还要好。
STL 的另外一个特点是,它是以源码方式免费提供的,程序员不仅可以自由地使用这些代码,也可以学习其源码,甚至按照自己的需要去修改它。
在C++标准中,STL 被组织为以下的一组头文件(注意,是没有.h 后缀的!):
algorithm / deque / functional / iterator / list / map/memory/numeric/queue/set/stack/utility/vector/

/*算法中的下一个排列,用到了STL中的库函数 next_permutation()
是STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题
用法是 next_permutation(star,end),
函数要求输入的是一个升序排列的序列的头指针和尾指针,分别是 star,end
*/
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{int i,n;char s[12];gets(s);n=strlen(s);sort(s,s+n);do{puts(s);printf("\n");}while(next_permutation(s,s+n));
}

全排列(下一个排列,算法)相关推荐

  1. leetcode 31.下一个排列

    题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空 ...

  2. 下一个全排列_下一个排列

    下一个全排列 Problem statement: 问题陈述: Given a permutation print permutation just greater than this. 给定一个排列 ...

  3. 【LeetCode笔记】31. 下一个排列(Java、原地算法、偏数学)

    文章目录 题目描述 思路 && 代码 二刷 打卡第八天- 题目描述 需要花点时间思考的一道题,这篇题解写得很好. 思路 && 代码 主要分为这三个步骤: 从后往前找到满 ...

  4. LintCode领扣算法问题答案:190. 下一个排列

    190. 下一个排列 描述 给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列. 如果没有下一个排列,则输出字典序最小的序列. 样例 1: 输入:1,2,3 输出:1,3,2 ...

  5. LeetCode 30串联所有单词的子串31下一个排列

    标题 串联所有单词得字串 下一个排列 维护真的不易,如有帮助还请点赞关注,关注公众号bigsai回复进群即可加入打卡. 串联所有单词得字串 题目描述: 给定一个字符串 s 和一些长度相同的单词 wor ...

  6. Leetcode 31. 下一个排列 (每日一题 20210831)

    实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数).如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列).必须 原地 ...

  7. 下一个排列—leetcode31

    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空间. ...

  8. Leecode31. 下一个排列——Leecode大厂热题100道系列

    我是小张同学,立志用最简洁的代码做最高效的表达 以下是我个人做的题解,每个题都尽量囊括了所有解法,并做到了最优解,欢迎大家收藏!留言! 传送门-->Leecode大厂热题100道系列题解 问题描 ...

  9. 数组的合并和升序排列_leetcode No.31 下一个排列

    题目链接: 下一个排列 - 力扣(LeetCode)​leetcode-cn.com 题目描述: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个 ...

最新文章

  1. 前端面试回顾(1)---javascript的面向对象
  2. HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
  3. recyclerview的数据刷新(下拉刷新和自动加载更多)以及添加提示语(例如:“数据已加载完毕”)
  4. NSHashTable and NSMapTable
  5. strictmode
  6. spring事务传递机制原理
  7. 序列最小最优化算法(SMO) SVM凸优化求
  8. Windows服务器配置fileZilla Server
  9. Fedora 9 NFS配置
  10. 如何在Word中快速制作组织结构图?没想到可以如此简单
  11. 计算机相关国外期刊,计算机 国外期刊
  12. Ajax读书笔记(四)
  13. 个人网站如何申请支付接口?(教程)
  14. 区块链ICO是什么意思?回答所有你关于ICO的问题
  15. python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...
  16. 一个应届毕业生的求职回忆录(指引道路)
  17. Anaconda3安装tensorflow踩坑记录
  18. jsonObject.getString()解析任意字段均可强转为string
  19. Html 实现手风琴效果
  20. Apache Spark RDD 论文(中文翻译)

热门文章

  1. 随机动漫图片API接口
  2. Deliberated Domain Bridging for Domain Adaptive Semantic Segmentation
  3. 华为云WeLink:让智能办公行走云端
  4. 原始套接字编程——Teardrop
  5. 南京(选自 余秋雨《文化苦旅》)
  6. teamViewer远程连接vnp过程
  7. Aspose.Words 将Word(DOC / DOCX)转换为HTML教程
  8. (动归三剑客)打家劫舍 (动归三剑客)
  9. 今日睡眠质量记录85分
  10. File和Filelnfo类