下面我已经表示了2D位阵列中2位的排列(1s是红色的)。左边的矩阵有一组连续的1,但右边的矩阵有2。
我想在这样一个具有一组连续1的数组的数组中循环遍历二进制值的每个可能的排列。我知道对于像上面这样的10×7网格,当你包含非连续排列时,有2个(10×7)排列,但我希望通过排除非连续排列,我将是能够在合理的CPU时间内完成所有这些工作。
说到合理性,我也对一种算法感兴趣,以确定有多少排列是连续的。
我的问题与这些问题类似,但不同:
感谢任何帮助。我有点卡住了。
答案 0 :(得分:0)
所以,我发现OEIS(整数序列的在线百科全书)有一个来自<!-- Checklist: Prototype -->
<article class="divider">
<h3>Prototype Property</h3>
<p>The prototype property adds new properties or methods to Javascript objects.</p>
<p>NOT WORKING!!!!!!!!!!!!!</p>
<p id="prototype-example"></p>
<button onclick="myHouse.methodexample()">Click Me</button>
</article>
的序列,用于&#34;非零n X n二进制数组的数量,所有1&#39; s连接&#34 ; (A059525)。除了固定在1个细胞宽(triangular numbers)或2或3个细胞宽度的网格外,它们不提供任何公式。还有sequence for 4 x n,但没有公式。
答案 1 :(得分:0)
我能想到的两种方法。一种是迭代所有可能的序列,并设计一个非连续组的测试,以及一些跳过大区域保证不连续的方法。
第二种方法是尝试构建所有连续组,这样您就不需要进行测试。这是我要采取的方法:
n = width * height
n - 1
n - 1
块之间的所有连续解决方案您可以根据以下规则放置您的作品,回溯每个深度的下一个展示位置: