【发布时间】:2013-05-17 02:15:24
【问题描述】:
这更像是一个谜题而不是编码问题。我需要找出可以生成多少个满足某些约束的二进制数。输入是
(integer) Len - Number of digits in the binary number
(integer) x
(integer) y
二进制数必须使得从二进制数中取任意 x 个相邻数字应至少包含 y 个 1。
例如-
长度 = 6,x = 3,y = 2
0 1 1 0 1 1 - 长度为 6,从中取任意 3 个相邻的数字,然后 会有2个l的
我在一次采访中向我提出了这个 C# 编码问题,我想不出任何算法来解决这个问题。不寻找代码(虽然它是受欢迎的),任何形式的帮助,指针表示赞赏
【问题讨论】:
-
011011的长度是 6 还是 5?如果你想为你的问题创建一个算法,你需要弄清楚000101是否是算法找到的有效数字,它实际上是101(小于111111,考虑到的最大数字Len变量)并且它也满足(x,y)条件。基本上,你必须知道你是在看000000-111111区间还是只是在100000-111111。 -
@AlexFilipovici 000101 不是有效数字,“二进制数中的任何 x 个相邻数字应至少包含 y 个 1”,而 000 则没有。
-
@FrancescoDeLisi,
101小于Len = 6变量(即111111)生成的最大数字。算法是否应该只在具有正好 6 位二进制表示的数字之间计算,还是在小于或等于111111的所有数字之间计算?如果是后者,Len对于101将只有 3 个。 -
@AlexFilipovici 我认为你应该考虑整个序列而不是它的十进制表示。这是一个位序列。也许问题可能是“可以生成多少个 Length=Len 的二进制数......”
-
生成数字的长度是多少?应该是 = Len 还是
标签: algorithm