java - 大小为 N 的 java Array
问题描述
在 c++ 中,可以使用函数生成数组的排列next_permutation
。是否有一个等效于这种函数的 java 来生成大小为 N 的数组的排列?
我正在尝试提出一个等效的递归实现,但正在努力巩固我的逻辑。
解决方案
java中没有这样的内置函数。您必须创建自己的,这并不复杂。我将立即使用解决方案(不一定是最佳解决方案)对此答案进行编辑
public static void printperms(int[] perm, boolean[] used, int k)
{
if (k == perm.length) print(perm);
for (int i=0; i<perm.length; i++) {
if (!used[i]) {
used[i] = true;
perm[k] = i;
printperms(perm, used, k+1);
used[i] = false;
}
}
}
然后您可以创建一个新方法来调用它:
public void perms(int n){
printperms(new int[n], new boolean[n], 0);
}
最后,在我有print
方法的地方,您可以将数组添加到列表中,以便您可以将它们全部收集到列表中,或者您可以将其打印出来。你的选择。随心所欲。
推荐阅读
- java - 使用 JAX-RS GenericType 进行 Jackson 对象映射
- python - 如何轻松更改代码的功能?
- python - 在构建 r 包时附加 python 脚本
- angular - 为什么当循环不止一次时,formArray 会变成有角度的 formControl 以形成反应形式?如何停止它或强制返回 formArray?
- loopbackjs - 创建 GeoPoint 时,lat 必须是数字
- python - `yield from` 生成器与 `yield from` 列表性能
- json - 来自 Spring 端点的不需要的布尔值总是返回 null
- sql - 选择每个月的最大日期
- google-cloud-vision - 使用 Google vision api 对盒子内的字符进行 Ocr
- android - 如何在 RadCalendar Day Cell 中设置事件文本的字体大小