添加查找算法和SingleProblem

This commit is contained in:
huihut
2018-02-11 01:08:43 +08:00
parent 4667db6985
commit 8a3d4f0e08
29 changed files with 1212 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
#include <stdio.h>
//递归法
int Neumann2_4_12(int n) {
//由图可知第0次有1个方格
if (n == 0) return 1;
//递推关系的求解请查看说明文档
return Neumann2_4_12(n - 1) + 4 * n;
}
int main() {
int n = 0, a = 0;
printf("------冯诺依曼邻居问题------\n");
printf("已知:\n");
printf(" 0 阶冯诺依曼邻居的元胞数为 1 \n");
printf(" 1 阶冯诺依曼邻居的元胞数为 5 \n");
printf(" 2 阶冯诺依曼邻居的元胞数为 13 \n");
printf("求:\n");
printf(" n 阶冯诺依曼邻居的元胞数\n");
printf("----------------------------\n");
printf("请输入n\n");
scanf("%d", &n);
//建立递推关系,使用递归求解
a = Neumann2_4_12(n);
printf("------------通项法-------------\n");
printf(" %d 阶冯诺依曼邻居的元胞数为 %d\3n", n, a);
getchar();
getchar();
return 0;
}

View File

Binary file not shown.

View File

@@ -0,0 +1,38 @@
## 冯诺依曼邻居问题(递推关系)
### 代码
[冯诺依曼邻居问题(递推关系)代码](Neumann2_4_12.cpp)
### 问题说明
某算法从一个1×1的方格开始,每次都会在上次图形的周围再加上一圈方格,在第n次的时候要生成多少个方格?下图给出了n = 0,1,2是的结果。
![](http://ojlsgreog.bkt.clouddn.com/NeumannNeighborProblem.jpg)
### 功能说明
本程序使用递推关系求解。
### 代码简述
若设第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(n - 1) + 4 * n
然后在代码中使用递归法,递归结束条件为n = 0,即
if (n == 0) return 1;
则可写出递归法的代码。
在程序中用Neumann2_4_12函数进行递归求解。