gpt4 book ai didi

c++ - 如何遍历一个0、两个0,一直到n个0的所有位串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:12 25 4
gpt4 key购买 nike

我有一个函数来递增一个位串,如下所示:

void increment(boost::dynamic_bitset<> &bitset)
{
for (int loop = 0; loop < bitset.size(); ++loop)
{
if ((bitset[loop] ^= 0x1) == 0x1)
{
break;
}
}
}

我想要一个以与调用增量相同的方式调用的函数,但以不同方式修改位串。每次调用它时,我都想获得与前一个具有相同数量的 0 的下一个位串。

例如,如果位串的长度为 10,则对该函数的前 10 次调用将给出一个带有单个 0 的位串。然后,调用 11 到 20 将返回带有 2 个 0 的位串。我希望它一直继续下去,直到位串全为 0。

如何设置这样的功能?谢谢!

最佳答案

你可以在Matters Computational中找到答案,第 1.24.3 章“轮类顺序”。您必须将整数更改为位集并翻转值。与位集一起使用时,此实现可能不是最佳的。

关于c++ - 如何遍历一个0、两个0,一直到n个0的所有位串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319859/

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