写出next_permutation()的代码
时间: 2023-12-04 19:31:37 浏览: 55
next_permutation()是一个C++标准库函数,用于生成给定序列的下一个排列。下面是一个可能的实现:
```cpp
#include <algorithm>
#include <iostream>
#include <vector>
template <typename T>
bool next_permutation(std::vector<T>& vec) {
auto it = std::is_sorted_until(vec.rbegin(), vec.rend());
if (it == vec.rend()) {
std::reverse(vec.rbegin(), vec.rend());
return false;
}
auto pivot = std::upper_bound(vec.rbegin(), it, *it);
std::swap(*pivot, *it);
std::reverse(vec.rbegin(), it);
return true;
}
int main() {
std::vector<int> nums{1, 2, 3};
do {
for (auto num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
} while (next_permutation(nums));
return 0;
}
```
这段代码会打印出输入序列的所有排列。
阅读全文