Java递归全排列
程序员文章站
2024-01-13 12:28:40
...
public static Stream<Integer> range(final Integer start, Integer length, Integer step, List<Integer> except) { Supplier<Integer> seed = new Supplier<Integer>() { private Integer next = start; @Override public Integer get() { Integer _next = next; next += step; return _next; } }; return Stream.generate(seed).limit(length).filter(new Predicate<Integer>() { @Override public boolean test(Integer t) { if (except == null) return true; if (except.contains(t)) return false; return true; } }); } List<Integer> list = new ArrayList<Integer>(); AtomicInteger count = new AtomicInteger(0); public void WholeArrangement(int N) { Stream<Integer> range = range(0, N, 1, list); range.forEach(new Consumer<Integer>() { @Override public void accept(Integer t) { list.add(t); WholeArrangement(N); list.remove(list.size() - 1); } }); if (list.size() == N) { count.incrementAndGet(); System.out.println(Arrays.toString(list.toArray())); } }
推荐阅读
-
Java递归全排列
-
【LeetCode】104. Maximum Depth of Binary Tree 二叉树的深度 DFS BFS 递归方式 迭代方式 JAVA
-
【LeetCode】 46. 全排列 回溯 JAVA
-
JAVA数据结构05--递归
-
stl 全排列
-
编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
-
编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数
-
dfs-全排列(UPC-方案数)
-
带你了解Java数据结构和算法之递归
-
Java的递归算法详解