【发布时间】:2020-11-01 07:21:24
【问题描述】:
请帮我找到以下最有效的解决方案。
int max = 2;
int sequenceLength = 3;
List<Integer> sequence = new ArrayList<Integer>(sequenceLength);
List<List<Integer>> possibilitites = new ArrayList<List<Integer>>();
...solution...
System.out.print(possibilitites);
sequenceLength 是每个序列的长度。
序列将包含数字的组合,介于 0 到 Max 之间,即 2。
创建的每个序列,都将被添加到可能性中。
该解决方案应该能够处理任何 max 和 sequenceLength。
预期结果:
(0,0,0),(0,0,1),(0,0,2),(0,1,0),(0,1,1) 等等
【问题讨论】:
-
有
(max+1) ^ length的可能性,所以max=2和length=3有27 个。随着length的增加,这个数字变得非常大。例如,如果max=1和length=32有 40 亿种可能性。 -
谢谢你的公式,它有帮助。但我也需要 ArrayList 的可能性。
-
Java 中可能有一个我不知道的内置函数。但是可以通过简单的计数算法来生成可能性。例如。
max=2和length=3有 27 种可能性,因此使用循环从 0 计数到 26,然后将数字分解为以 3 为底的数字。您也可以使用数字数组进行计数。增加最低有效数字。如果结果大于max,则将数字设置为 0,并增加下一个数字。当最重要的数字到达max+1时,您就完成了。
标签: java algorithm arraylist combinations sequence