数字三角形

Description


         7
       3   8
     8   1   0
   2   7   4   4
 4   5   2   6   5

显示了一个三角形数。编写一个程序,计算累计最高的数字传递路线,从顶部开始到最下方结束。每一步仅可以走斜左(右)向下的路线。


Input


第一行包含一个整数N:三角形的行数。以下N行描述三角形的数据。1<=N<1001<=N<100。三角形的数量,所有的整数,在0990−99之间。


Output


输出累计最高的值。

 1 #include <iostream>
 2 #include <string.h>
 3 
 4 using namespace std;
 5 
 6 int n;
 7 int a[100][100];
 8 int d[100][100];
 9 
10 int solve(int i,int j){
11     if(d[i][j]>=0) return d[i][j];
12     return d[i][j] = a[i][j]+(i==n?0:max(solve(i+1,j),solve(i+1,j+1)));
13 }
14 
15 int main()
16 {
17     memset(d,-1,sizeof(d));
18     cin>>n;
19     for(int i=1;i<=n;i++)
20         for(int j=1;j<=i;j++)
21             cin>>a[i][j];
22     cout<<solve(1,1)<<endl;
23     return 0;
24 }

猜你喜欢

转载自www.cnblogs.com/unbeatable/p/9115080.html