【发布时间】:2016-02-11 20:05:25
【问题描述】:
遍历整数数组的所有不同排列的最有效算法是什么?具体来说,我有一个数组,它可以在 C++ 术语中保存 4 个大小为 uint32_t 的元素,但我需要在 Java 中实现它,所以我想我需要使用 long 将它限制在 4,294,967,295。所以一个示例输出将是这样的:
[1,1,1,1]
[2,1,1,1]
[3,1,1,1]
[4,1,1,1]
[1,2,1,1]
[1,3,1,1]
[1,4,1,1]
[1,1,2,1]
[1,1,3,1]
[1,1,4,1]
...
[4,294,967,295, 4,294,967,295, 4,294,967,295, 4,294,967,295]
它不需要按那个顺序进行。只要它尝试所有组合。
谢谢!
【问题讨论】:
-
这些既不是排列也不是组合,至少在技术意义上是这样。
-
另外,那将是
10^38不同的可能性。 -
这很可能是一个 XY 问题...您要解决的真正问题是什么?因为仅使用
int需要很长时间,我什至无法想象使用long需要多长时间... -
你为什么要打印它,你没有做任何算法盟友,从 1 到 4,294,967,295 的任何 4 个随机数都是你的排列之一。
标签: java c++ arrays algorithm sorting