【发布时间】:2017-08-08 04:04:14
【问题描述】:
在下面,我表示了 2D 位数组中的 2 个位排列(1 为红色)。左边的矩阵有一组连续的 1,但右边的矩阵有 2。
我想遍历这样一个数组中所有可能的二进制值排列,该数组具有一组连续的 1。我知道,对于像上面这样的 10×7 网格,当您包含非连续排列时,有 2(10 × 7) 排列,但我希望通过排除非连续排列,我将能够在合理的 CPU 时间内完成所有任务。
说到合理性,我也对确定有多少排列是连续的算法感兴趣。
我的问题与以下类似但不同:
感谢任何帮助。我有点卡住了。
【问题讨论】:
-
您希望有多少行和多少列?
-
即使你只看连续 1 的数组,我认为这个数字对于 10x7 来说仍然太大了。
-
我同意这个数字对于 10x7 来说仍然太大。您应该尝试使用较小尺寸的算法,并查看它如何扩展以了解您的问题的合理上限是多少。我对算法有一些想法,但最好使用像 Python 这样的语言,它具有集合排列和冻结的排列集合集,以及类似类型。我的想法仍然会出现大量重复,这需要进行测试以避免添加重复。
-
我也怀疑是否存在一种相当简单的算法来仅生成连续的 1 组,而这在内部不起作用,因为“生成所有并过滤掉不连续的”,这完全超出了提高速度的最初目标.
标签: algorithm math multidimensional-array permutation bitarray