Fencepost 总和
在这里我们考虑形式的总和
a + b + a + b + … a
与
a + b + a + b + … b
要想象这些总和,想象一下在栏杆和栏杆之间交替的一段围栏。有三种情况可能。
-
想象一下栅栏的两端有两个柱子,用铁轨连接起来。n rails 需要 n + 1 个帖子。相反,p 柱由 p-1 导轨连接。
| - | - | - |
-
想象一下栅栏的一端有一个柱子,但另一端是开放式导轨。n rails 需要 n 个帖子。
| - | - | -
要么
- | - | - |
-
想象一下两端有开放式导轨的栅栏。n rails 需要 n-1 个帖子。相反,p 柱通过 p + 1 轨连接。
- | - | -
这样的计算出现在诸如图形对象的布局之类的情况下,其中对象的大小必须被求和并且对象之间的空间也必须求和。在这种情况下,重要的是要意识到意图是否在每一端都有空格。
这种围栏的总宽度将始终为:
(柱子宽度)x(柱子数量)+(轨道宽度)x(轨道数量)
但是在计算帖子数量和轨道数量时必须谨慎,以避免出现所谓的一对一错误。这种错误很常见。