Description
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
显示了一个三角形数。编写一个程序,计算累计最高的数字传递路线,从顶部开始到最下方结束。每一步仅可以走斜左(右)向下的路线。
Input
第一行包含一个整数N:三角形的行数。以下N行描述三角形的数据。1<=N<1001<=N<100。三角形的数量,所有的整数,在0−990−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 }