如何对一个置换使用下一个置换 我如何在C++中使用NExtx置换算法来获得一个数字的下一个排列而不是所有的下一个排列。
例如:我怎样才能把12645改成12654。你应该在问之前试一下如何对一个置换使用下一个置换 我如何在C++中使用NExtx置换算法来获得一个数字的下一个排列而不是所有的下一个排列。,c++,C++,例如:我怎样才能把12645改成12654。你应该在问之前试一下 #include <iostream> #include <algorithm> using namespace std; int main () { int myints[] = {1, 2, 6, 4, 5}; next_permutation(myints,myints+5); cout << myints[0] << ' ' << myints
#include <iostream>
#include <algorithm>
using namespace std;
int main () {
int myints[] = {1, 2, 6, 4, 5};
next_permutation(myints,myints+5);
cout << myints[0] << ' ' << myints[1] << ' ' << myints[2] << ' ' << myints[3] << ' ' << myints[4] << '\n';
return 0;
}
来自引用:如果函数可以确定下一个更高的排列,则它会重新排列元素并返回true。如果这是不可能的(因为它已经处于可能的最大排列),它将根据第一个排列(按升序排序)重新排列元素并返回false
只需运行一次并检查返回值..仅此而已。试着检查一下手册
示例代码
intmain(){
向量v;
//获取向量元素
if(下一个置换(v.begin(),v.end())
for(vector::iterator it=v.begin();it!=v.end();it++)
至少要先表现出你的努力,否则有人会否决你的问题,在最坏的情况下可能会搁置:)你应该自己尝试。不亲自尝试就提问是很糟糕的。我们不是来做你的工作的,而是来帮助你的。@Neeraj Pandey.:检查答案。
if (next_permutation(myints, myints + n))
if(next_permutation(myints,myints+n))
//print them;
else
{
//this is the first permutation..no higher permutation.
//you may print it or something else..
}
int main(){
vector<int> v;
// get the vector elements
if (next_permutation(v.begin(), v.end()))
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
cout<<*it<<endl;
else
{
cout<<"No higher permutation";
cout<<"initial permutation: "<<endl;
//....
}
return 0;
}