Next Permutation

原创 2015年07月10日 09:22:35

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

The replacement must be in-place, do not allocate extra memory.

Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.
1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1
1.先从右到左找到左面比右面小的第一个数字,记下标为i
2.从右到左面找到比i大,但是最小的数,记小标为j
3,交换i.j数
4.对i右面的数进行反转。

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int n=nums.size();
        int i,j;
        if(n<=1)
        return ;
        for(i=n-2;i>=0;--i)
        {
            if(nums[i]<nums[i+1])
            break;
        }
        if(i=-1)//这个地方出错,应该是i==-1
        {
            reverse(nums.begin(),nums.end());
            return;
        }
        for(j=n-1;j>i;--j)
        {
            if(nums[i]<nums[j]){
               break; 
            }

        }
        swap(nums[i],nums[j]);
        reverse(nums.begin()+i+1,nums.end());
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

详解STL中next_permutation()函数实现

前几天,遇到一个可以用穷举法解决的问题,就是中给定几个数子,让凑出等式的类型。之前,我都是用写个函数递归调用,今天突然想到其实有一个更简单的方式来实现穷举,那就是使用STL中的next_permuta...
  • kuaisuzhuceh
  • kuaisuzhuceh
  • 2014年01月18日 17:21
  • 1071

next_permutation(排列组合)函数的用法

关于该函数的用法,不妨先看下这道题 题目描述  一天ZJ看到小明竟然排序学的比自己还牛,于是就出了一道题来难为小明,来证明自己排序学的比小明更牛。题目就是有一个数n(0,,,聪明的你能帮小...
  • FK103
  • FK103
  • 2015年04月11日 10:18
  • 1276

next_permutation的思想和用法

#include #include using namespace std; int main(){ int a[4]={1,2,3,4}; do{ cout
  • HyJoker
  • HyJoker
  • 2016年03月15日 21:44
  • 1753

Permutation递归解法

permutation类型题的解法
  • a6219221
  • a6219221
  • 2016年09月07日 03:21
  • 434

C++中全排列函数next_permutation 用法

全排列参考了两位的博客 感谢! http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html http://blog.csdn.net/ac_gibson/...
  • HowardEmily
  • HowardEmily
  • 2017年03月29日 14:38
  • 1437

STL之next_permutation函数对各种类型的全排列实例

最近学了个next_permutation函数,但学习的还不是很透彻,这里转载一篇博文详解next_permutation函数对各种变量类型的全排列。(转载地址:点击打开链接)   若需要了解ne...
  • zwj1452267376
  • zwj1452267376
  • 2015年07月02日 18:17
  • 1126

C++STL中全排列函数next_permutation的使用

next_permutation函数     组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(...
  • AC_Gibson
  • AC_Gibson
  • 2015年04月27日 12:35
  • 7954

全排列生成算法:next_permutation

概念 全排列的生成算法有很多种,有递归遍例,也有循环移位法等等。C++/STL中定义的next_permutation和prev_permutation函数则是非常灵活且高效的一种方法,它被广泛...
  • jeasn168
  • jeasn168
  • 2014年09月04日 08:56
  • 7901

下一个字典序列(next permutation)

给定一个序列求这个序列的安字典序排序的下一个序列,最大序列的下一个序列为最小序列,比如: 1,2,3 → 1,3,2 3,2,1 → 1,2,3 1,1,5 → 1,5,1 分析:...
  • abc398966925
  • abc398966925
  • 2014年05月10日 14:10
  • 908

排列组合(permutation)系列解题报告

本文讲解4道关于permutation的题目。 1. Permutation:输出permutation——基础递归 2. Permutation Sequence: 输出第k个permutatio...
  • abcjennifer
  • abcjennifer
  • 2014年10月18日 18:46
  • 9128
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Next Permutation
举报原因:
原因补充:

(最多只允许输入30个字)