用C ++语言编写的Johnson trotter置换算法代码

时间:2016-04-13 07:57:47

标签: c++

我正在尝试用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;
}

0 个答案:

没有答案