gpt4 book ai didi

java - 如何按字典顺序循环特定长度的所有可能 vector ?

转载 作者:行者123 更新时间:2023-12-02 09:53:20 27 4
gpt4 key购买 nike

假设我们有一个长度为 4 的 vector ,其中每个元素可以是 0 到 9 之间的数字。例如:<1, 8, 0, 3>

我不想简单地循环所有 10^4 个可能的 vector ,而是想按特定顺序循环。所以我想从<0, 0, 0, 0>开始,转到<1, 0, 0, 0> ,那么:

<2, 0, 0, 0>, <3, 0, 0, 0>, ..., <9, 0, 0, 0>, <0, 1, 0, 0>

等等(注意最后两个的顺序)。我想不出一种方法来为可变 vector 长度编写此代码。

假设我们正在进行第 i 次迭代,有 i按照我上面提到的字典顺序排列的第一个 vector 。拥有i th vector 对于在 (i+1) 中执行某些过程是必需的。第 vector 。该方案通过随机循环所有可能的 vector 节省了计算量。

我还没有真正找到一种非暴力且内存有效的方法来解决这个问题。特别考虑到我应该能够支持可变 vector 长度和不同的条目数字范围。

最佳答案

因此,在这种情况下,您可以将每个元素视为以 10 为基数的数字。第 i 个元素是以 10 为基数的 i,数字反向排列命令。例如:

int[] indexToElement(int index, int base) {
String string = Integer.toString(index, base);
int[] element = new int[string.length()];

for (int i = 0; i < string.length(); ++i) {
element[i] = Character.digit(string.charAt(string.length() - i - 1), base);
}

return element;
}

关于java - 如何按字典顺序循环特定长度的所有可能 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157034/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com