Algorithm 当从单个数字生成阵列时,计算子阵列中的1数
我正在研究这个编码问题: 对于给定的数字n,形成一个列表,并在列表中的相同位置依次插入以下模式:Algorithm 当从单个数字生成阵列时,计算子阵列中的1数,algorithm,recursion,divide-and-conquer,Algorithm,Recursion,Divide And Conquer,我正在研究这个编码问题: 对于给定的数字n,形成一个列表,并在列表中的相同位置依次插入以下模式: {楼层(n/2),n%2,楼层(n/2)} …直到列表中的每个元素都是1或0。现在,计算从l到r(1索引)范围内的1数 解释 从n开始。然后用以下三个元素制作一个列表:{floor(n/2),n%2,floor(n/2)}。现在展开--就地--这两个外部元素,考虑到新的n是楼层(n/2) 此过程将继续,直到n的值降至1或0。因此,它将基本上形成一棵树,从根上的1个节点(n)开始,每层的每个节点都有3
{楼层(n/2),n%2,楼层(n/2)}
…直到列表中的每个元素都是1或0。现在,计算从l到r(1索引)范围内的1数
解释
从n开始。然后用以下三个元素制作一个列表:{floor(n/2),n%2,floor(n/2)}
。现在展开--就地--这两个外部元素,考虑到新的n是楼层(n/2)
此过程将继续,直到n的值降至1或0。因此,它将基本上形成一棵树,从根上的1个节点(n)开始,每层的每个节点都有3个分支
输入格式
三个整数:n,l,r
约束条件
0 ≤ N 该数组可以看作是二叉树的顺序序列,如果应用简单的算法,二叉树也是递归树 该二叉树具有以下属性:
- 是的
- 其高度h对应于表示n所需的二进制位数。所以在9(0b1001)的情况下,h=4
- 它有2h-1个节点,也是数组表示中的元素数
- 树的深度i处的节点都具有相同的值,并对应于n的第i个最低有效位。我们把这个位叫做ni,i在[1,h]中
- 因此,所有节点的总值等于[1,h]中i的2i-1ni之和,即n
- 深度i处节点的左(或右)子树将对应于为楼层(n/2i)生成的树
input{width:4em}
n:
i:
j:
总和: