NEXT_PERMUTATION的用法和注意事项C/C++

写在前面:

只有在引入algorithm(算法)才能使用next _permutation哦!!

#include <algorithm> // 用于使用next_permutation函数

permutation      (排列)//为什么左边的括号不能用黑色打(sad)。

BidirectionalIterator(双向迭代器)


正文

一、next_permutation的标准用法: //顿号是|\键

bool next_permutation(BidirectionalIterator first, BidirectionalIterator last);

解释:实际上你只需要在BidirectionalIterator first,和BidirectionalIterator last放入你想要进行排列的数字的开始指针和结束指针//importance:你的结束指针并不会被进行排列

eg1:

a[3]={1,2,3};
next_permutation(a,a+3);

   在例子中a+3实际上是没有被初始化的数组位置。因为他不参与排列所以这段代码实际上是对1,2,3进行全排列。


二 、next_permutation 的返回值

next_permutation只会返回 true/ flase

eg2:(上接-eg1)

do{cout<<1<<" "
}while(next_permutation(a,a+3))

next_permutation会进行不重复的排列组合。当还有全新组合可以用的时候返回True。当没有全新的组合可用时返回Flase

因此eg2中的代码会重复3!次


三、next_permutation的注意事项

next_permutation会改元素在数组中的位置

eg3:

a[5]={1,2,3,4,5};
do{cout<<a[0];
}while(next_permutation(a,a+5));

因为next_permutation可能会改变a[0]储存的元素

一下为输出:

111111111111111111111111222222222222222222222222333333333333333333333333444444444444444444444444555555555555555555555555

这是我第一篇有点技术力的文章。希望在不久的将来和大家分享更有趣有用的东西

2024-10-24

Funzhou

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值