gpt4 book ai didi

c++ - 字符串二进制组合

转载 作者:行者123 更新时间:2023-11-28 04:45:10 25 4
gpt4 key购买 nike

有没有一种简单的方法可以找到所有数字加起来为 x 点的二进制字符串,假设所有 1 值 2 点,所有 0 值 1 点。让我解释一下:

考虑到我收到一个数字 5,我怎样才能得到所有可能的字符串,例如 2*(个数)+ 1*zeros = 5。5 次的所有结果:

00000

10000

0100

0010

0001

101

110

011

(我确实知道可能解的数量是 5+1 (x+1) 的斐波那契数,但我想不出找到所有值的方法)。

我正在考虑以二进制形式添加数字或者使用基本转换器,但我可能在这里遗漏了一些东西。提前谢谢你。

最佳答案

通过一个循环,您可以生成基本字符串(在您的例子中为“00000”、“0001”和“011”),然后使用 std::next_permutation():

for( int zeros = n; zeros >= 0; zeros -= 2 ) {
int ones = ( n - zeros ) / 2;
std::string base = std::string( zeros, '0' ) + std::string( ones, '1' );
}

live example

关于c++ - 字符串二进制组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49396644/

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