2018-02-11 01:08:43 +08:00
|
|
|
|
|
|
|
|
|
## 冯诺依曼邻居问题(通项公式)
|
|
|
|
|
|
|
|
|
|
### 代码
|
|
|
|
|
|
|
|
|
|
[冯诺依曼邻居问题(通项公式)代码](Neumann2_3_12.cpp)
|
|
|
|
|
|
|
|
|
|
### 问题说明
|
|
|
|
|
|
|
|
|
|
某算法从一个1×1的方格开始,每次都会在上次图形的周围再加上一圈方格,在第n次的时候要生成多少个方格?下图给出了n = 0,1,2是的结果。
|
|
|
|
|
|
2019-02-23 01:23:25 +08:00
|
|
|
|
![](https://huihut-img.oss-cn-shenzhen.aliyuncs.com/NeumannNeighborProblem.jpg)
|
2018-02-11 01:08:43 +08:00
|
|
|
|
|
|
|
|
|
### 功能说明
|
|
|
|
|
|
|
|
|
|
本程序使用通项公式求解。
|
|
|
|
|
|
|
|
|
|
### 代码简述
|
|
|
|
|
|
|
|
|
|
若设第n次生成的方格数是a(n),则:
|
|
|
|
|
|
|
|
|
|
a(1) = a(0) + 4 * 1
|
|
|
|
|
a(2) = a(1) + 4 * 2
|
|
|
|
|
a(3) = a(2) + 4 * 3
|
|
|
|
|
...
|
|
|
|
|
a(n) = a(n-1) + 4 * n
|
|
|
|
|
|
|
|
|
|
化简可得:
|
|
|
|
|
|
|
|
|
|
a(n) - a(1) = 4 * (n + (n-1) + ... + 2 )
|
|
|
|
|
|
|
|
|
|
即:
|
|
|
|
|
|
|
|
|
|
a(n) = 2 * n*n + 2 * n + 1
|
|
|
|
|
|
|
|
|
|
则可得出a(n)的通项公式,即可用通项公式直接求解。
|
|
|
|
|
|
|
|
|
|
在程序中用Neumann2_3_12函数返回a(n)的值。
|