Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对一个置换使用下一个置换 我如何在C++中使用NExtx置换算法来获得一个数字的下一个排列而不是所有的下一个排列。_C++ - Fatal编程技术网

如何对一个置换使用下一个置换 我如何在C++中使用NExtx置换算法来获得一个数字的下一个排列而不是所有的下一个排列。

如何对一个置换使用下一个置换 我如何在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

例如:我怎样才能把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[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;
}