next_permutation的全排列(小白都看得懂)

不知道作为初学者的你是否在刷题时遇到过求一个数组的全排列,初学者的你是否还在苦苦使用DFS,
这篇讲述一下next_premutation的用法!!

在此之前,我们需要了解STL的sort排序。
现在输入一组数组,来看代码

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
    int a[4];
    for(int i=0;i<4;i++){
        cin>>a[i];
    }
    sort(a,a+4);
    for(int i=0;i<4;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

输入一串数,我们可以看到sort()可以按从小到大顺序排列,但这个是数字,如果我们输入字符串呢?在这里插入图片描述
这里我们输入一个字符串:

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
    string a;
    cin>>a;
    sort(a.begin(),a.end());
    cout<<a<<endl;
    return 0;
}

我们可以看到sort()排序后,输出的是字符ASCII码值从小到大的顺序

掌握这些后,时不我待,我们来看看全排列!!!
先输入int型的数组!!!

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
   int a[4];
   int temp=0;//记录数组每次全排列后加一
   for(int i=0;i<4;i++)
   {
       cin>>a[i];
   }
   sort(a,a+4);
   do
   {
       for(int i=0;i<4;i++){
            cout<<a[i]<<" ";
       }
       temp++;
       cout<<"the number of permutation : "<<temp<<endl;
   }while(next_permutation(a,a+4));
   return 0;
}

下图就是我们的输出结果,可看到四(n)个数他们的全排列共有24种情况,其实n的全排列共有n!种情况哦
在这里插入图片描述
同理,字符串也是类似上述的用法,而且有了这种方法,我们可以轻易的得到一组数他的第几种全排列情况:

#include <iostream>
#include<algorithm>
using namespace std;

int main()
{
   int a[4];
   int temp=0;//记录数组每次全排列后加一
   int n;
   for(int i=0;i<4;i++)
   {
       cin>>a[i];
   }
   cin>>n;
   sort(a,a+4);
   do
   {
       temp++;
       if(n==temp)
       for(int i=0;i<4;i++)
       {
           cout<<a[i]<<" ";
       }
   }while(next_permutation(a,a+4));
   return 0;
}

对比上图我们可以知道1 3 4 2 的第四组全排列就是1 3 4 2
在这里插入图片描述
啦啦啦啦,next_permutation的用法就介绍到这里啦,后续继续更新STL的相关用法!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值