【发布时间】:2017-03-27 04:21:07
【问题描述】:
昨天我问了一个似乎重复的问题,但是,我很确定不是重复的,因为这个问题稍微高级一点。标题并没有说明全部内容,请继续阅读。
让我们假设我们有一个像这样的二维数组:
{{true, false}, {true, false}, {true, false}, ...}
现在,假设我们要遍历它的所有可能排列:
{{false, true}, {true, false}, {true, false}, ...}
{{true, false}, {false, true}, {true, false}, ...}
{{true, false}, {true, false}, {false, true}, ...}
{{false, true}, {true, false}, {false, true}, ...}
等等……
由于这增加了一个级别,它严重混淆了我的想法。我们知道内部数组的长度总是两个,这永远不会改变。那就是:
boolean[][] b = new boolean[i][2];
使用 Java 获取 2D 数组的所有可能排列的最佳方法是什么?
谢谢,
【问题讨论】:
-
通过排列,您是指在二维数组中选择一组布尔值的方法有多少种,或者从第一列中选择一个,在第二列中选择一个的方法有多少?
-
所有可能的选择假,真,所有可能的方式。例如,第一对和第二对都可能是假的、真的。或者三个都先。或者第一,第二和第四,等等..
-
嗯,理论上,真假值有 4 种排列形成一对。如果您试图找出四种排列中的每一种在您的数组中出现的次数,那么您必须专门计算数组中出现的次数 (true,true)。这不完全是一个排列。
-
我认为没有理由假设二维会增加这个问题的任何复杂性。这与“查找 1D 数组的排列”问题没有什么不同。碰巧一维数组的内容也是数组,但这不是否意味着内容本身必须经历额外的排列。
-
是
{ false, true }和{ true, false }唯一可能的配对,还是{ false, false }或{ true, true }?