我正在尝试在 C++中实现堆的算法。我觉得我已经完全按照算法的工作原理编写了代码,但它给出了错误的结果。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print(vector<int> v)
{
for(auto x:v)
cout<<x;
cout<<endl;
}
void gen(vector<int> v,int n)
{
if(v.size()==1)
cout<<v[0];
print(v);
int i = 0;
while(i<n)
{
gen(v,n-1);
if(n%2)
swap(v[n-1],v[0]);
else
swap(v[n-1],v[i]);
i++;
}
}
int main()
{
vector<int> v ={1,2,3};
gen(v,v.size());
}
我一直在努力完成这项工作。对于上面代码中的向量,它给出了荒谬的结果:
123 123 123 123 213 213 321 321 321 231 231 123 123 123 213 213