Fencepost 总和

在这里我们考虑形式的总和

a + b + a + b + … a

a + b + a + b + … b

要想象这些总和,想象一下在栏杆和栏杆之间交替的一段围栏。有三种情况可能。

  1. 想象一下栅栏的两端有两个柱子,用铁轨连接起来。n rails 需要 n + 1 个帖子。相反,p 柱由 p-1 导轨连接。

    | - | - | - |

  2. 想象一下栅栏的一端有一个柱子,但另一端是开放式导轨。n rails 需要 n 个帖子。

    | - | - | -

    要么

    - | - | - |

  3. 想象一下两端有开放式导轨的栅栏。n rails 需要 n-1 个帖子。相反,p 柱通过 p + 1 轨连接。

    - | - | -

这样的计算出现在诸如图形对象的布局之类的情况下,其中对象的大小必须被求和并且对象之间的空间也必须求和。在这种情况下,重要的是要意识到意图是否在每一端都有空格。

这种围栏的总宽度将始终为:

(柱子宽度)x(柱子数量)+(轨道宽度)x(轨道数量)

但是在计算帖子数量和轨道数量时必须谨慎,以避免出现所谓的一对一错误。这种错误很常见。