动态规划,dp[i][j]=max{dp[i-1][j-1],dp[i-1][j]}+a[i][j]
Description
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1)
Input
Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle,
all integers, are between 0 and 99.
Output
Your program is to write to standard output. The highest sum is written as an integer.
Sample Input
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
Sample Output
30
#include<iostream>
using namespace std;
int main(){
int N,a[250][250];
cin>>N;
for(int i=1;i<=N;i++)
for(int j=1;j<=i;j++)
cin>>a[i][j];
for(int i=0;i<N+1;i++){
a[i][0]=0;
a[i][i+1]=0;
}
for(int i=1;i<=N;i++){
for(int j=0;j<=i;j++){
int l=a[i][j]+a[i-1][j-1];
int m=a[i][j]+a[i-1][j];
a[i][j]=l>m?l:m;
}
}
int max=0;
for(int i=1;i<=N;i++)
max=max>a[N][i]?max:a[N][i];
cout<<max<<endl;
//system("pause");
return 0;
}