简单问题

Image1

首先看一个简单的问题。如图所示,这是一个大小为 点阵,问该点阵中共有多少个正方形?

很容易可以发现,只需统计边长为1的正方形个数 ,边长为2的正方形个数 ,和边长为3的正方形个数 ,共计14个正方形。(注意, 的点阵边长为3)。 点阵的正方形总数即



Image2

扩展到 的点阵,如上图 的点阵,正方形边长只需统计到N和M中较小的那一边的边长即可。对于每个边长s,正方形个数为 点阵的正方形总数即(假设

扩展问题

Image3

我们扩展一下正方形的定义。如图所示,这是一个大小为 的点阵,绿色和红色正方形都算作合法的正方形,问该点阵中共有多少个正方形?

首先我们定义上图中绿色边的正方形为基准正方形。根据观察可以发现,一个边长为s的基准正方形点阵中共包含s个合法的正方形。因此对于每个边长s,基准正方形个数为 (由简单问题得知),再乘以s,即为该边长s的所有正方形个数。 点阵的正方形总数即



Image4

同样,扩展到 的点阵,对于每个边长s,正方形个数为 点阵的正方形总数即(假设

参考资料

[1] Google Kickstart Round A 2017 Problem A.Square Counting

[2] Quora