Java数组 array 的值为[1,2, 3, 4, 5, 6, 7, 8, 9, 10],请计算出array数组中的元素两两相加为10的组合有多少种,并将各种组合放入一个新数组中输出到控制台,其中[4,6]和[6,4]算是两种组合。
时间: 2024-11-22 14:42:12 浏览: 17
首先,我们需要遍历给定数组`[1,2, 3, 4, 5, 6, 7, 8, 9, 10]`,找出所有可以组成10的两个数的组合,并将它们存储在一个新数组中。由于需要考虑重复性(如[4,6]和[6,4]算作同一种组合),我们可以使用哈希集合(HashSet)来存储组合,保证每个组合只添加一次。
下面是用Java实现这个过程的一个示例:
```java
import java.util.ArrayList;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ArrayList<int[]> combinations = new ArrayList<>();
HashSet<String> seenCombinations = new HashSet<>();
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
int sum = array[i] + array[j];
if (sum == 10) {
String combinationStr = Integer.toString(array[i]) + "," + Integer.toString(array[j]);
if (!seenCombinations.contains(combinationStr)) {
combinations.add(new int[]{array[i], array[j]});
seenCombinations.add(combinationStr);
}
}
}
}
// 输出组合到控制台
System.out.println("Number of unique combinations that add up to 10: " + combinations.size());
for (int[] combo : combinations) {
System.out.println("[ " + combo[0] + ", " + combo[1] + " ]");
}
}
}
```
运行上述代码后,会输出满足条件的组合以及总数。注意,这里的组合是按照`(较小数, 较大数)`的形式打印的,因为题目要求的是组合,而不是有序对。
阅读全文