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递归全排列
最新推荐文章于 2025-04-16 23:55:27 发布