依曼
从r=0开始,此时格子上有一个方块,然后逐步演化,每一步都在上一步的基础上添加一圈儿方块,当r=n时,会有多少个方块呢?
分析
假设初始方块为O,从r=0到r=1时,在O的水平和垂直方向上各增加了两个方块;从r=1到r=2时,也是如此,同时在其它方向上也增加了若干方块。由此,可以把方块的增加分为两部分,一是水平和垂直方向D1,二是其它方向D2。可以看到,每到新的一步,D1方向上增加的都是4个方块,它们都与原图(上一步)的一个边相邻;而D2方向上增加的方块都与原图的两条边相邻。这样,只要知道了上一步的图中有多少条外层的边,即可以确定下一步会增加多少方块了,所以这里可以先找外层边的变化规律。
解决
假设在第n步时,边的数目为S(n),则S(0) = 4,S(1) = 12,下面来看后面的每一步S是如何变化的。从r=1到r=2时,D1方向增加的4个方块为S(2)贡献了2×4条边;D2方向上,每一个新的方块,隐藏了两条原来的边,同时又暴露出了两条新边,所以这些方块并没有改变边的数目。这样我们可以得到一个结论是S(n) = S(n-1) + 8,且S(0) = 4。这是一个等差数列,S(n) = 8n + 4(n >= 0)。
假设在第n步时,方块的数目为B(n),则B(0) = 1,根据上面的分析有B(n)比B(n-1)增加的方块是两部分:D1方向的4个;D2方向上是其它边数目的一半,所以得到关系:
B(n) = B(n-1) + 4 + [S(n-1)-4] / 2 = B(n-1) + 4n(n >= 1)。解此递推关系可以得到:
B(n) = 2n(n+1) + 1。
可以看到B(n)和S(n)都对应着一个简单的递推关系。
还可以从另一个角度来看待这些方块。设初始方块O的坐标为(x0, y0),那么在第r步,图中的方块与O的关系是:
即距离O不超过r的方块。