假设我们有一个整数数组,如下所示:
int[] sol = new int[] {3, 5, 1, 2, 4};
我想枚举在选择数组的 2 个任意元素并交换它们时可以获得的所有可能的数组(即,如果我们将数字 3 与数字 2 交换,我们会得到{2, 5, 1, 3, 4}
(。对于这种情况,有 10 种可能的 2 个元素交换。
如何使用 Java 显示所有可能的枚举?
您需要做的第一件事是弄清楚可能存在多少种不同的可能组合。在这种情况下,由于您选择了 2 个数字: 3 对 5 3对1 3 对 2 3 对 4
5 对 3 5 对 1 5 对 2 5 对 4
等等。由于每个数字有 4 个其他数字可以配对,我们可以通过执行以下公式来计算总数:numberOfElementsInVector*4。在这种情况下,我们得到 20。这意味着我们只需要循环 20 次。我们还需要跟踪我们已经收集到的结果。为此,我们将字符串存储在 ArrayList 中。现在我们要做的是以下双 for 循环:
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 个数字组合。