Binary 带相邻数的组合

Binary 带相邻数的组合,binary,combinations,combinatorics,Binary,Combinations,Combinatorics,考虑一个长度为k的二进制字符串,它正好有m个零(因此,剩余的k-m元素是“1”)。从元素0到元素1有j个转换的字符串的总数是多少?(j可以是1到2m之间的任何数字)。 例如,如果k=5、m=2和j=1,则只有两个这样的字符串:11100和00111。 当k=5、m=2和j=3时,则有四个这样的字符串:10110、01011、11010和01101。 当k=5、m=2和j=4时,只有一个这样的字符串:10101。这里有一种方法 #Example 1 k <- 5 m <- 2 j &l

考虑一个长度为k的二进制字符串,它正好有m个零(因此,剩余的k-m元素是“1”)。从元素0到元素1有j个转换的字符串的总数是多少?(j可以是1到2m之间的任何数字)。 例如,如果k=5、m=2和j=1,则只有两个这样的字符串:11100和00111。 当k=5、m=2和j=3时,则有四个这样的字符串:10110、01011、11010和01101。
当k=5、m=2和j=4时,只有一个这样的字符串:10101。

这里有一种方法

#Example 1
k <- 5
m <- 2
j <- 1

y <- expand.grid(rep(list(0L:1L), k))
zeros <- apply(y,1,function(x) sum(x == 0))
chg <- apply(y,1,function(x) sum(diff(sign(x)) != 0))

y[zeros==m&chg==j,]
   Var1 Var2 Var3 Var4 Var5
8     1    1    1    0    0
29    0    0    1    1    1

#Example 2
k <- 5
m <- 2
j <- 3

y <- expand.grid(rep(list(0L:1L), k))
zeros <- apply(y,1,function(x) sum(x == 0))
chg <- apply(y,1,function(x) sum(diff(sign(x)) != 0))

y[zeros==m&chg==j,]
   Var1 Var2 Var3 Var4 Var5
12    1    1    0    1    0
14    1    0    1    1    0
23    0    1    1    0    1
27    0    1    0    1    1

#Example 3
k <- 5
m <- 2
j <- 4

y <- expand.grid(rep(list(0L:1L), k))
zeros <- apply(y,1,function(x) sum(x == 0))
chg <- apply(y,1,function(x) sum(diff(sign(x)) != 0))

y[zeros==m&chg==j,]
   Var1 Var2 Var3 Var4 Var5
22    1    0    1    0    1
#示例1
K