题解:动态规划,每个点的最大值等于下方或者右下的最大值
注意:假如只有一行时,应该等于唯一的一个数
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int a[105][105],b[105][105];
int size;
int set(int x,int y){
if(b[x][y]!=0)return b[x][y];
else{
b[x][y]=max(set(x+1,y),set(x+1, y+1))+a[x][y];
return b[x][y];
}
}
int main(){
cin>>size;
for(int i=0;i<size;i++){
for(int j=0;j<=i;j++){
cin>>a[i][j];
b[i][j]=0;
}
}
for(int i=0;i<size;i++){
b[size-1][i]=a[size-1][i];
}
int t=0;
t=max(a[0][0],set(0, 0));
cout<<t<<endl;
}