java 实现从n个数中选取m个数的所有组合
时间: 2023-10-26 08:03:20 浏览: 134
java代码-从n个值里取m个值的全部组合方式(不重复)
Java可以实现从n个数中选取m个数的所有组合。可以使用回溯算法来解决这个问题。
回溯算法的基本思路是通过递归来生成所有可能的组合。在每一步中,我们选择一个数,并在剩下的数中继续选择下一个数,直到选取了m个数。
下面是一个示例的Java代码实现:
```java
import java.util.ArrayList;
import java.util.List;
public class Combination {
public static void main(String[] args) {
int n = 5; // 输入的总数
int m = 3; // 需要选取的数的个数
int[] nums = {1, 2, 3, 4, 5}; // 输入的数
List<List<Integer>> combinations = new ArrayList<>(); // 保存所有组合的列表
backtrack(combinations, new ArrayList<>(), nums, 0, m);
// 打印所有组合
for (List<Integer> combination : combinations) {
System.out.println(combination.toString());
}
}
private static void backtrack(List<List<Integer>> combinations, List<Integer> currCombination, int[] nums, int start, int m) {
// 判断是否已经选择了m个数
if (currCombination.size() == m) {
combinations.add(new ArrayList<>(currCombination));
return;
}
// 从剩下的数中选择下一个数
for (int i = start; i < nums.length; i++) {
currCombination.add(nums[i]); // 选择当前数
backtrack(combinations, currCombination, nums, i + 1, m); // 递归调用
currCombination.remove(currCombination.size() - 1); // 撤销选择
}
}
}
```
这段代码将输出所有从给定的5个数中选取3个数的组合。运行结果如下:
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 4]
[1, 3, 5]
[1, 4, 5]
[2, 3, 4]
[2, 3, 5]
[2, 4, 5]
[3, 4, 5]
以上就是使用Java实现从n个数中选取m个数的所有组合的方法。
阅读全文