有点不知如何下手的题
本文基本是照着这个翻译的。Pawn 是国际象棋里的兵。
由于只能往下走,我们从上到下一行一行的处理,维护本层能够到达 的位置。根据规则,有两种情况会使到达性发生改变:
- 如果能到达上一行的 i 位置而本行的 i 位置有一个兵,那么本行的 i 位置就是不可达的。
- 如果上一行的 i-1 或 i+1 能到达的话而本行的 i 位置有一个兵,本行的 i 位置就是可达的。
由于第二种情况可以覆盖掉第一种情况(即如果 i 同时符合两种情况那他也是可达的),所以在我们记录不可达和可达的变化之后,先处理不可达的变化,再处理可达的变化。
代码: