我想知道算法生成长度为n的二进制字符串的序列,其中k个为下一个字符串,两个数字不同.
例如:
11100
11010
11001
10101
10110
10011
00111
01011
01101
01110
11100
Run Code Online (Sandbox Code Playgroud)
当然,必须使用所有n \choose k二进制字符串.
我没有任何评论地赞成这个功能.我想知道这个功能在做什么?有帮助吗?
int flr(int n, char a[])
{
#define A(i) a[((i) + k) % n]
int l[n], ls = n, z[n], min = 0;
for (int i = 0; i < n; i++)
{
l[i] = i;
z[i] = 1;
}
for (int k = 0; ls >= 2; k++)
{
min = l[0];
for (int i=0; i<ls; i++) min = A(l[i])<A(min) ? l[i] : min;
for (int i=0; i<ls; i++) z[A(l[i])!=A(min) ? l[i] : (l[i]+k+1)%n] = 0;
for (int ls_=ls, …Run Code Online (Sandbox Code Playgroud)