使用java写一段代码,要求:在m个数里面取n个数,要求列出所有组合,使用循环的方式实现
时间: 2024-02-03 08:15:01 浏览: 69
以下是使用递归方式实现m个数中取n个数的所有组合的Java代码:
```java
public class Combination {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
int n = 3;
printCombination(nums, n);
}
public static void printCombination(int[] nums, int n) {
int[] data = new int[n];
combinationUtil(nums, data, 0, nums.length - 1, 0, n);
}
private static void combinationUtil(int[] nums, int[] data, int start, int end, int index, int n) {
if (index == n) {
for (int i = 0; i < n; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
return;
}
for (int i = start; i <= end && end - i + 1 >= n - index; i++) {
data[index] = nums[i];
combinationUtil(nums, data, i + 1, end, index + 1, n);
}
}
}
```
在上述代码中,`nums`为原始数组,`n`为需要取出的元素个数。`printCombination`方法调用`combinationUtil`方法来打印所有组合。`combinationUtil`方法使用递归方式实现,`data`数组用于存储当前组合数据,`start`和`end`用于确定当前搜索区间,`index`表示当前已经选定的元素个数,`n`为需要选定的元素个数。
在`combinationUtil`方法中,如果已经选定了需要的元素个数,就输出当前组合;否则,从`start`到`end`的区间中选定一个元素,将其存储到`data`数组中,然后递归搜索剩下的元素。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)