数字三角形问题,C语言实现
时间: 2023-11-27 18:04:15 浏览: 86
基于C实现的N阶数字正方形 ;N阶数字三角形;N阶数字递减三角形;乘法表
数字三角形问题是指给定一个由数字组成的三角形,从三角形的顶部开始走到底部,每次只能向下走一步或向右下方走一步,求出从顶部走到底部的一条路径,使得路径上的数字之和最大。
以下是使用C语言实现数字三角形问题的代码:
```c
#include <stdio.h>
#define MAX_N 100
int n;
int triangle[MAX_N][MAX_N];
int max_sum[MAX_N][MAX_N];
int max(int a, int b) {
return a > b ? a : b;
}
void solve() {
// 初始化最后一行
for (int j = 0; j < n; j++) {
max_sum[n-1][j] = triangle[n-1][j];
}
// 从倒数第二行开始逐行计算最大值
for (int i = n-2; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
max_sum[i][j] = max(max_sum[i+1][j], max_sum[i+1][j+1]) + triangle[i][j];
}
}
}
int main() {
scanf("%d", &n);
// 读入数字三角形
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
scanf("%d", &triangle[i][j]);
}
}
solve();
// 输出最大值
printf("%d\n", max_sum[0][0]);
return 0;
}
```
该代码使用了动态规划的思想,从最后一行开始逐行计算最大值,最终得到顶部到底部的最大值。
阅读全文