The Triangle
Description 7 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 Source |

#include<iostream> #include<stdio.h> using namespace std; int n; int ma[105][105]; int dp[105][105]; int dfs(int row,int col){ if(row>n) return 0; if(dp[row][col]) return dp[row][col]; dp[row][col]=ma[row][col]+max(dfs(row+1,col),dfs(row+1,col+1)); return dp[row][col]; } int main(){ while(~scanf("%d",&n)){ for(int i=0;i<=n+2;i++) for(int j=0;j<=n+2;j++) dp[i][j]=0; for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ scanf("%d",&ma[i][j]); } } printf("%d ",dfs(1,1)); } }