运行整数数组所有组合的算法
Algorithm to run through all combinations of integer array
运行
整数数组的所有不同排列的最有效算法是什么?具体来说,我有一个数组,它可以容纳 4 个大小为 C++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]
它不需要按该顺序进行。只要它尝试所有组合。
谢谢!
我希望
你耐心等待,因为有很多可能的组合。
您不允许使用 0,因此总数略小于 2128 种可能的组合。其中只有4,294,967,2954,或340,282,366,604,025,813,516,997,721,482,669,850,625。
因此,如果你每秒可以处理一亿个,那么只需要10,790,283,060,756,779,982,147年就可以进行计算,给出或占用一个宇宙的寿命。
您可能需要更好的策略来找到正确的解决方案,而不是对所有可能性进行暴力枚举。
只需几个循环:
for (int a = 0; a != max_int; ++a) {
for (int b = 0; b != max_int; ++b) {
for (int c = 0; c != max_int; ++c) {
for (int d = 0; d != max_int; ++d) {
std::cout << a << b << c << d << std::endl;
}
}
}
}
相关文章:
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- 为 C++11 算法组合多个谓词
- 双重释放或损坏(输出):使用向量的组合算法0x0000000001a880a0***
- Python到C++:使用递归列出背包的所有组合的算法
- 从给定的 IPv6:端口列表中搜索 IPv6:端口组合的最快搜索算法是什么 O(1) 时间一致性
- 给定数字与重复的组合的算法?C
- 排列和组合生成算法
- 加密++对称算法和经过身份验证的块模式组合
- 所有的组合算法和解决C++问题的一般方法
- 按字典顺序打印给定字符串的所有字母组合的算法
- 生成每个可能的 7 位数字组合的算法
- 运行整数数组所有组合的算法
- 根据组合框中的选定项目选择算法
- C++算法优化:从N个元素中求出K组合
- 递归算法将所有组合分成两组
- 数组算法的组合
- 按类型算法的列表组合
- 一个很好的算法来获得元素的闲置组合
- 是硬币变化算法,输出仍可由DP解决的所有组合