昨天我问了一个看似重复的问题,但是,我很确定这个问题并不重复,因为这个问题有点先发制人。标题并未解释所有内容,因此请继续阅读。
让我们假设我们有一个像这样的2D数组:
{{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数组的所有可能排列的最佳方法是什么?
谢谢,
答案 0 :(得分:1)
这显然可以通过任何其他排列发生的相同方式完成,您需要遍历您希望应用排列的列表,并递归地遍历所有可能的不同元素组合。
private void permute(List<List<Boolean>> list, int t)
{
for(int i = 0; i < list.size(); i ++)
{
Collections.swap(list.get(i), 0, 1);
permute(list, t + 1);
Collections.swap(list.get(i), 1, 0);
}
if(t == list.size() - 1)
System.out.println("Another permutation.");
}
这涵盖了所有事情,突然之间你已经找出了上述问题的所有可能组合。
现在让我们假设我们有三个布尔而不是两个以2D方式切换,突然之间的事情变得更加复杂。
亲切的问候,