有如下数据 String[] s1 = {"A", "C", "D", "E"} 求出s1各元素有哪些组合方式,使用java代码实现并输出组合
时间: 2023-08-07 14:12:52 浏览: 87
你可以使用递归来生成 s1 中所有元素的组合方式。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
public class CombinationGenerator {
public static void main(String[] args) {
String[] s1 = {"A", "C", "D", "E"};
List<List<String>> combinations = generateCombinations(s1);
printCombinations(combinations);
}
public static List<List<String>> generateCombinations(String[] s1) {
List<List<String>> combinations = new ArrayList<>();
backtrack(combinations, new ArrayList<>(), s1, 0);
return combinations;
}
public static void backtrack(List<List<String>> combinations, List<String> currentCombination, String[] s1, int start) {
combinations.add(new ArrayList<>(currentCombination));
for (int i = start; i < s1.length; i++) {
currentCombination.add(s1[i]);
backtrack(combinations, currentCombination, s1, i + 1);
currentCombination.remove(currentCombination.size() - 1);
}
}
public static void printCombinations(List<List<String>> combinations) {
for (List<String> combination : combinations) {
System.out.println(combination);
}
}
}
```
在这个示例中,我们定义了一个 `generateCombinations` 方法来生成 s1 中所有元素的组合方式。该方法使用了回溯算法来遍历所有可能的组合。我们还定义了一个辅助方法 `printCombinations` 来打印生成的组合。
运行以上代码,输出结果如下:
```
[]
[A]
[A, C]
[A, C, D]
[A, C, D, E]
[A, C, E]
[A, D]
[A, D, E]
[A, E]
[C]
[C, D]
[C, D, E]
[C, E]
[D]
[D, E]
[E]
```
这样,你就可以得到 s1 各元素的所有组合方式,并将其输出。每一行表示一种组合,方括号内的元素即为该组合的成员。注意,空的组合(`[]`)表示没有选择任何元素的情况。