摘花生 动态规划 c语言
时间: 2023-12-17 16:28:56 浏览: 37
以下是使用动态规划算法解决摘花生问题的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100
#define MAX_M 100
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int n, m;
int a[MAX_N][MAX_M];
int dp[MAX_N][MAX_M] = {0};
// 读入数据
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &a[i][j]);
}
}
// 动态规划求解
dp[0][0] = a[0][0];
for (int i = 1; i < n; i++) {
dp[i][0] = dp[i - 1][0] + a[i][0];
}
for (int j = 1; j < m; j++) {
dp[0][j] = dp[0][j - 1] + a[0][j];
}
for (int i = 1; i < n; i++) {
for (int j = 1; j < m; j++) {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + a[i][j];
}
}
// 输出结果
printf("%d\n", dp[n - 1][m - 1]);
return 0;
}
```