有如下一个数字三角形:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
从定点出发,在每个节点可以选择向下走或者向右下走,一直走到底层。试设计一种算法,计算从三角形顶端到底部的一条路径,是该路径经过的数字总和最大
1 #include<iostream> 2 #include<algorithm> 3 #define NUM 101 4 int main() 5 { 6 using namespace std; 7 int n, d[NUM][NUM], *maxsum;//表示n行的数字三角形,用d数组来存放数字. 8 cin >> n; 9 for (int i = 1; i <= n; i++) 10 for (int j = 1; j <= i; j++) 11 cin >> d[i][j]; 12 maxsum = d[n];//maxsum指针指向第n行 13 for (int i = n - 1; i >= 1; --i) 14 for (int j = 1; j <= i; ++j) 15 maxsum[j] = max(maxsum[j], maxsum[j + 1]) + d[i][j]; 16 cout << maxsum[1]<< endl; 17 return 0; 18 }
---恢复内容结束---
时间: 2024-10-11 21:52:05