全排列(下一个排列,算法)
给出一个字符串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));
}
全排列(下一个排列,算法)相关推荐
- leetcode 31.下一个排列
题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空 ...
- 下一个全排列_下一个排列
下一个全排列 Problem statement: 问题陈述: Given a permutation print permutation just greater than this. 给定一个排列 ...
- 【LeetCode笔记】31. 下一个排列(Java、原地算法、偏数学)
文章目录 题目描述 思路 && 代码 二刷 打卡第八天- 题目描述 需要花点时间思考的一道题,这篇题解写得很好. 思路 && 代码 主要分为这三个步骤: 从后往前找到满 ...
- LintCode领扣算法问题答案:190. 下一个排列
190. 下一个排列 描述 给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列. 如果没有下一个排列,则输出字典序最小的序列. 样例 1: 输入:1,2,3 输出:1,3,2 ...
- LeetCode 30串联所有单词的子串31下一个排列
标题 串联所有单词得字串 下一个排列 维护真的不易,如有帮助还请点赞关注,关注公众号bigsai回复进群即可加入打卡. 串联所有单词得字串 题目描述: 给定一个字符串 s 和一些长度相同的单词 wor ...
- Leetcode 31. 下一个排列 (每日一题 20210831)
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数).如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列).必须 原地 ...
- 下一个排列—leetcode31
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空间. ...
- Leecode31. 下一个排列——Leecode大厂热题100道系列
我是小张同学,立志用最简洁的代码做最高效的表达 以下是我个人做的题解,每个题都尽量囊括了所有解法,并做到了最优解,欢迎大家收藏!留言! 传送门-->Leecode大厂热题100道系列题解 问题描 ...
- 数组的合并和升序排列_leetcode No.31 下一个排列
题目链接: 下一个排列 - 力扣(LeetCode)leetcode-cn.com 题目描述: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个 ...
最新文章
- 前端面试回顾(1)---javascript的面向对象
- HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
- recyclerview的数据刷新(下拉刷新和自动加载更多)以及添加提示语(例如:“数据已加载完毕”)
- NSHashTable and NSMapTable
- strictmode
- spring事务传递机制原理
- 序列最小最优化算法(SMO) SVM凸优化求
- Windows服务器配置fileZilla Server
- Fedora 9 NFS配置
- 如何在Word中快速制作组织结构图?没想到可以如此简单
- 计算机相关国外期刊,计算机 国外期刊
- Ajax读书笔记(四)
- 个人网站如何申请支付接口?(教程)
- 区块链ICO是什么意思?回答所有你关于ICO的问题
- python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...
- 一个应届毕业生的求职回忆录(指引道路)
- Anaconda3安装tensorflow踩坑记录
- jsonObject.getString()解析任意字段均可强转为string
- Html 实现手风琴效果
- Apache Spark RDD 论文(中文翻译)