【问题标题】:How can I check to see if my array has an even permutation?如何检查我的数组是否具有偶数排列?
【发布时间】:2017-10-14 00:32:48
【问题描述】:

所以我创建了一个数组并对其进行了洗牌,我想检查该数组是否具有偶数排列。有人知道我该怎么做吗?

totalTiles = (column * row) ;
int[] randomNumberArray = new int[totalTiles]; 

for (int p = 0; p < totalTiles; p++)
{
    randomNumberArray[p] = number;
    number++;
}

Shuffle(randomNumberArray);

洗牌方法

static void Shuffle <T>(T[] array)
{
        Random _random = new Random();
        int n = array.Length;

        for (int i = 0; i < n; i++)
        {
            int r = i + _random.Next(n - i);
            T t = array[r];
            array[r] = array[i];
            array[i] = t;
        }
}

【问题讨论】:

  • “有一个偶数排列”是什么意思?你想知道它是否包含任何偶数吗?还是只有偶数?使用表达式number % 2 == 0 检测偶数。
  • 偶数排列是可以通过对 2 个项目进行偶数交换来执行的排列。所以在这种情况下,排列是偶数当且仅当n 是偶数。

标签: c# permutation


【解决方案1】:

这可能有帮助吗? https://en.wikipedia.org/wiki/Heap%27s_algorithm 生成排列然后只需检查 % 2 == 0 是否是偶数?只是猜测。

procedure generate(n : integer, A : array of any): if n = 1 then output(A) else for i := 0; i < n - 1; i += 1 do generate(n - 1, A) if n is even then swap(A[i], A[n-1]) else swap(A[0], A[n-1]) end if end for generate(n - 1, A) end if

刚刚从 wiki 页面快速获取。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2022-11-29
    • 2014-03-04
    • 2022-11-14
    相关资源
    最近更新 更多