我正在尝试用C ++实现Johnson trotter,但我坚持使用正常的排列。我不想使用向量,并希望创建一个类来解决这个问题。
有人可以帮忙实现这个C ++的实现吗?
void swap(int x, int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
return;
}
void print(int s)
{
for (int i = 0; i<s; i++)
cout << arr[i] << " ";
cout << endl;
return;
}
void permute(int k, int s)
{
if (k == 0)
print(s);
else
{
for (int i = k - 1; i >= 0; i--)
{
swap(i, k - 1);
permute(k - 1, s);
swap(i, k - 1);
}
}
}
int num(int x)
{
int j = 0;
if (x == 0)
j = 1;
else
j = x*(num(x - 1));
return j;
}