二维数组的所有可能排列
All possible permutations of 2D array
昨天我问了一个看起来重复的问题,但是我很确定这个问题不是重复的,因为这个问题稍微高级一点。标题没有解释全部,请继续阅读。
让我们假设我们有一个像这样的二维数组:
{{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 实现二维数组所有可能排列的最佳方法是什么?
谢谢,
这显然可以用与发生任何其他排列相同的方式完成,您需要遍历您希望应用排列的列表,并递归地遍历不同元素的所有可能组合。
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.");
}
这涵盖了所有事情,突然间你已经规划出上述问题的所有可能组合。
现在让我们假设我们有三个布尔值而不是两个以二维方式切换,突然间事情变得稍微复杂一些。
亲切的问候,
昨天我问了一个看起来重复的问题,但是我很确定这个问题不是重复的,因为这个问题稍微高级一点。标题没有解释全部,请继续阅读。
让我们假设我们有一个像这样的二维数组:
{{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 实现二维数组所有可能排列的最佳方法是什么?
谢谢,
这显然可以用与发生任何其他排列相同的方式完成,您需要遍历您希望应用排列的列表,并递归地遍历不同元素的所有可能组合。
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.");
}
这涵盖了所有事情,突然间你已经规划出上述问题的所有可能组合。
现在让我们假设我们有三个布尔值而不是两个以二维方式切换,突然间事情变得稍微复杂一些。
亲切的问候,