考虑一个有效的字符串,其中包含按位操作数(即“ xor”,“ or”,“ and”)以及“ X”,其中X {0,1}中的整数。让我们考虑它们是n个“ X”的数目,然后是2 ** n个字符串的可能性。我们需要找到值为“ 0”和值为“ 1”的字符串的数目。
示例:
考虑4种可能的“ X&X”,只有3种值为0,只有1种值为1。
如果他们的字符串中有多个位的操作数,有人可以帮我吗?
答案 0 :(得分:0)
您没有说,但是我假设字符串的解释是通过从左到右关联来完成的(即0^1&0
的意思是(0^1)&0
)。我将使用|
,&
和^
表示“或”和“或”。
让s
是n个X
s的值为0的任意字符串,而t
是n个X
s的值为1的任意字符串。 / p>
然后,具有n + 1个X
且其值为1的字符串看起来像以下之一:t|0
,s|1
,t|1
,t&1
, s^1
,t^0
。评估为0的是s|0
,s&1
,s&0
,t&0
,s^0
,t^1
。
固定一个运算符序列,令S(n)为带有给定运算符的n个X
的字符串数,其值等于0,而T(n)为值为1的字符串数。给定的第i个运算符是O(i)。然后,仅对每个运算符计算上一段中的组合,您便具有递归关系:
|
&
,则S(n + 1),T(n + 1)= 2S(n)+ T(n),T(n)^
这些重复关系很容易在O(n)动态程序中进行编码。