假设我们有一个整数数组如下:
int[] sol = new int[] {3, 5, 1, 2, 4};
我想枚举在选择数组的2个任意元素并交换它们时可以获得的所有可能的数组(即如果我们将数字3与数字2交换,我们得到{2, 5, 1, 3, 4}
)。在这种情况下,有2个元素的10个可能的交换。
如何用Java显示所有可能的枚举?
答案 0 :(得分:0)
您需要做的第一件事是弄清楚可能存在多少种不同的可能组合。在这种情况下,由于您选择了2个数字: 3比5 3比1 3比2 3 for 4
5 for 3 5比1 5比2 5 for 4
等等等等。由于每个数字有4个其他数字可以配对,我们可以通过以下等式计算出总数:numberOfElementsInVector * 4。在这种情况下,我们得到20.这意味着我们只需要循环20次。我们还需要跟踪我们已经收集的结果。为此,我们将字符串存储在ArrayList中。现在我们要做的是以下双循环:ArrayList<String> results = new ArrayList<>();
for(int i = 0; i < sol.length; i++){
for(int j = 0; j < sol.length; j++){
String result = sol[i] + "," + sol[j] + "";
if(!results.contains(result) && sol[i] != sol[j]){
results.add(result);
}
}
}
System.out.printLn(results.toString());
此代码将系统地遍历任何长度的数组,并为您提供所有2个数字组合。