在N维网格中,单元的坐标表示为X1,X2,...,XN。任何具有负坐标的细胞都是白色的。原始单元格(具有全零坐标的单元格)被着色为黑色。 (X1,X2,...,XN)中单元格的颜色取决于具有坐标的N个单元格(X1-1,X2,...,XN),(X1,X2-1,... ,XN),....,(X1,X2,...,XN-1)。当且仅当这些N个坐标中的黑色单元的数量是偶数时,该单元被着色为白色,否则该单元被着色为黑色。
现在,给出子超立方体的起始和结束坐标。所有坐标都将是查询完成的非负整数。我们要计算这个子超立方体中有多少个超细胞是黑色的?
请建议我提示,参考或任何可以帮助我解决它的事情。
答案 0 :(得分:1)
强力算法:
fill the hypercube (the needed part) with value 'unknown'.
color[00000] = 1 #black
sum = 0
for each cell in sub-hypercube:
sum += getcolor(cell)
return sum
getcolor(cell):
if color[cell] == unknown
c = 0 #white
for each neighbour cell in decreasing direction within non-negative boundary:
c = c xor getcolor(neighbour)
color[cell] = c
return color[cell]
答案 1 :(得分:1)