枚举 Java 中向量的两个元素的所有可能交换



假设我们有一个整数数组,如下所示:

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 个数字组合。

最新更新