为了账号安全,请及时绑定邮箱和手机立即绑定

如何按字典序遍历所有可能的一定长度的向量?

如何按字典序遍历所有可能的一定长度的向量?

慕娘9325324 2022-11-30 11:23:18
假设我们有一个长度为 4 的向量,其中每个元素都可以是 0 到 9 之间的数字。例如:<1, 8, 0, 3>我不想简单地遍历所有 10^4 个可能的向量,而是想按特定顺序循环。所以我想从 开始<0, 0, 0, 0>,去<1, 0, 0, 0>,然后:<2, 0, 0, 0>, <3, 0, 0, 0>, ..., <9, 0, 0, 0>, <0, 1, 0, 0>依此类推(注意最后两个的顺序)。我想不出一种方法来为可变向量长度编写这个。假设我们处于第 i 次迭代中,i第 th 个向量按照我上面提到的字典顺序排列。拥有第ith 个向量对于在第 th 个向量中执行某些过程是必要的(i+1)。该方案节省了对所有可能向量进行随机循环的计算。我还没有真正找到解决这个问题的非蛮力和内存有效的方法。特别考虑到我应该能够支持可变向量长度和不同范围的条目数字。
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

因此,在这种情况下,您可以将每个元素视为以 10 为底数的数字。第i' 个元素i以 10 为底数,数字按相反顺序排列。例如:


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;

}


查看完整回答
反对 回复 2022-11-30
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号