package com.hanzheng.algorithm.backtrace;
import java.util.LinkedList;
import java.util.List;
/**
* 元素无重复,不可复选,从N个元素中选M个元素的组合
*/
public class CombineMFromNSubsets {
static List<List<String>> res = new LinkedList<>();
static LinkedList<String> track = new LinkedList<>();
public static void main(String[] args) {
// String[] nums = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
String[] nums = new String[]{"a", "b", "c"};
res = combine(nums, 2);
for (List<String> e : res) {
System.out.println(e);
}
}
private static List<List<String>> combine(String[] nums, int selectCount) {
backtrack(nums, selectCount, 0);
return res;
}
private static void backtrack(String[] nums, int selectCount, int start) {
if (track.size() == selectCount) {
res.add(new LinkedList<>(track));
return;
}
for (int i = start; i < nums.length; i++) {
if(track.contains(nums[i])){
continue;
}
track.add(nums[i]);
backtrack(nums, selectCount, start + 1);
track.removeLast();
}
}
}
从N个元素中选取M个元素问题
最新推荐文章于 2024-04-24 11:21:49 发布