仅生成长度为n且最大k个连续零的二进制字符串

阿什什舒克拉(Ashish shukla)

最有效的方法是仅生成长度为n的二进制字符串,这些字符串最多具有k个连续的零。

例如:-如果n = 3,则k = 2:

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

而不是000

注意:我的研究(NLP)需要这种方法,其中我使用位串来生成包含所有可能的n-gram的句子。我尝试枚举所有二进制字符串,但是,由于二进制字符串的数目在句子2 ^(n-1)的长度中呈指数形式,因此如果n> 30则代码崩溃。因此,我仅限于生成具有上述条件的那些位串,用于计算可行性。

管理层收购

简单递归版本(Delphi)

  procedure Generate(ZeroCount, MaxZeroCount, Len, MaxLen: Integer; s: string);
  begin
    if Len = MaxLen then
      Output(s)
    else begin
      if ZeroCount < MaxZeroCount then
        Generate(ZeroCount + 1, MaxZeroCount, Len + 1, MaxLen, s + '0');
      Generate(0, MaxZeroCount, Len + 1, MaxLen, s + '1');
    end;
  end;

整数值而不是字符串的变体

  if ZeroCount < MaxZeroCount then
    Generate(ZeroCount + 1, MaxZeroCount, Len + 1, MaxLen, Value shl 1);
  Generate(0, MaxZeroCount, Len + 1, MaxLen, (Value shl 1) or 1);

Generate(0,2,0,5,'')的输出;

00100
00101
00110
00111
01001
01010
01011
01100
01101
01110
01111
10010
10011
10100
10101
10110
10111
11001
11010
11011
11100
11101
11110
11111

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

长度为n且连续k个为1的二进制数组的数量

如何在Prolog中使用DCG生成长度为n-1的所有二进制字符串的语言

确定长度为 m 和汉明权重为 r 的二进制字符串的数量,其中可以包含最多 k 的连续零

如果仅允许一个操作,则二进制字符串将产生的最大二进制数,即K右旋转,其中K = [0,字符串长度]

使用k个查询在二进制字符串中找到最长为1的最长子字符串的长度

编写一个函数,该函数返回二进制字符串中最长的连续零序列

使用恰好k个翻转操作生成的长度为n的不同二进制序列的数量

二进制字符串长度 mod 64

长度为60的二进制字符串-最紧凑的存储方式

用K对创建二进制字符串

将所有大小为n的二进制字符串生成为布尔数组的最快方法?

如何生成长度为 N 的随机二进制数 0 或 1,并可以选择控制出现 0 或 1 的概率?

AND两个二进制字符串

如何生成一个26个字符的十六进制字符串,该字符串等于106位和((二进制为(53个1-53个零))

在Ruby中生成n位二进制字符串?

为什么 javascript 按位 & 在二进制数上会增加二进制字符串的长度

在Java中用前导零填充等于零(“ 0”)的二进制字符串

如果长度为100的二进制字符串以111开头,可以用几种方式写入?

替换二进制字符串中的通配符,避免三个相同的连续字母

二进制到字符串/字符串到二进制

R将字符串从6位二进制解码为8位二进制

将十六进制字符串转换为二进制并分离为位 n C++

将二进制字符串解释为Python中由Javascript本机方法生成的图像

二进制子字符串的certian长度的每个子字符串应至少具有一个'1'字符

在JavaScript中向二进制字符串添加前导零的方法

将整数转换为带有前导零的二进制字符串

TC:L:将整数转换为任意长度的二进制字符串

如何生成长度为n的Java中的SecureRandom的字符串?

kdb / q:生成长度为N的所有可能的“字符串”