algorithm - 给定序列具有值的概率
问题描述
考虑一个具有按位操作数的有效字符串(即“xor”、“or”、“and”)以及“X”,其中 X 是来自 {0,1} 的整数。让我们考虑它们是 n 个“X”,那么它们是 2**n 个可能的字符串。我们需要找到值为“0”和值为“1”的字符串的数量。
例子 :
考虑 4 个可能的“X&X”,只有 3 个的值为 0,只有一个的值为 1。
当字符串中的操作数不止一个位时,任何人都可以帮助我。
解决方案
您没有说,但我假设字符串的解释是通过从左到右关联(即0^1&0
表示(0^1)&0
)来完成的。我将使用|
,&
和^
for or, and, xor。
设s
为 n X
s 为 0t
的任意字符串, 为 n X
s 为 1 的任意字符串。
然后,计算结果为 1 的具有 n+1 的字符串X
看起来像以下之一: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) 是具有 nX
的字符串的数量,使用给定的运算符计算为 0,T(n) 是计算为 1 的数字。假设你的第 i 个运算符给出的是 O(i)。然后,仅计算上一段中每个运算符的组合,您就有递归关系:
- S(1)=T(1)=1
- S(n+1), T(n+1) = S(n), S(n)+2T(n) 如果 O(i)=
|
- S(n+1), T(n+1) = 2S(n)+T(n), T(n) 如果 O(i)=
&
- S(n+1), T(n+1) = S(n)+T(n), S(n)+T(n) 如果 O(i)=
^
这些递归关系很容易在 O(n) 动态程序中编码。
推荐阅读
- sql-server - 使用 pyodbc python 从 SQL Server 检索数据时出错
- react-native - FlatList 未填充请求
- laravel - 开发管理工具来重新定位/删除/添加 Vue 组件内容
- node.js - 如何自动将攻击者列入黑名单
- google-app-maker - Appmaker Efficiency,是否总是加载所有数据源?
- react-native - 如何修复“无法读取未定义的属性‘导航’”
- enums - 如何为枚举及其各自的变体实现特征?
- julia - 使用 CuArrays 限制 Julia 中的 GPU 内存
- java - 当焦点离开 TextArea 控件时会触发什么事件?
- sql - 在两个从属表 Oracle Apex 中插入值