1
#include<bits/stdc++.h>
using namespace std;
/*
a数组
13
11 8
12 7 26
6 14 15 8
12 7 13 24 11
dp数组
13
24 21
36 31 47
18 27
12 7 13 24 11
*/
int a[1005][1005],dp[1005][1005],n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
dp[n][i]=a[n][i];
}
for(int i=n-1;i>=1;i--){
for(int j=1;j<=i;j++){
dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
}
}
cout<<dp[1][1];
return 0;
}
2
#include<bits/stdc++.h>
using namespace std;
/*
a数组
5
13
11 8
12 7 26
6 14 15 8
12 7 13 24 11
dp数组
13
24 21
36 31 47
42 50 62 55
54 57 75 86 66
*/
int a[1005][1005],dp[1005][1005],n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>a[i][j];
}
}
dp[1][1]=a[1][1];
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+a[i][j];
}
}
int vmax=1;
for(int i=1;i<=n;i++){
vmax=max(vmax,dp[n][i]);
}
cout<<vmax;
return 0;
}