Ackermann函数A(m,n)可递归定义如下: 用c语言编写求解计算A(m,n)的动态规划程序。
时间: 2024-03-11 15:43:41 浏览: 111
C语言递归函数设计
5星 · 资源好评率100%
C 语言实现的动态规划算法如下:
```c
#include <stdio.h>
#define MAXN 1000
int dp[MAXN][MAXN];
int ackermann(int m, int n) {
int i, j;
for (i = 0; i <= m; ++i) {
dp[i][0] = i + 1;
}
for (j = 1; j <= n; ++j) {
dp[0][j] = 1;
}
for (i = 1; i <= m; ++i) {
for (j = 1; j <= n; ++j) {
dp[i][j] = dp[i - 1][dp[i][j - 1]];
}
}
return dp[m][n];
}
int main() {
int m = 2, n = 1;
int res = ackermann(m, n);
printf("A(%d, %d) = %d\n", m, n, res);
return 0;
}
```
其中 dp[i][j] 表示 A(i,j) 的值,根据递推式进行求解即可。
这个算法的时间复杂度为 O(mn),空间复杂度为 O(mn)。
阅读全文