C++ でHeap のアルゴリズムを実装しようとしています。アルゴリズムが機能するのとまったく同じようにコードを書いたと思いますが、間違った結果が得られます。
#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