#include"iostream" #include"fstream" #include"vector" usingnamespacestd; int tri[100][100]; int tri_max[100][100]; int tri_col[100]; int layer;//the layer of the trigle
int maxpath(int i,int j) { if(i == layer)return 0;//the last layer is layer+1 and the value is 0
if(tri_max[i][j]==-1) { int max1=maxpath(i+1,j); int max2=maxpath(i+1,j+1); if(max1 > max2) { tri_max[i][j]=max1+tri[i][j]; tri_col[i+1]=j; }else{ tri_max[i][j]=max2+tri[i][j]; tri_col[i+1]=j+1; } } return tri_max[i][j]; } int main() { ifstream fin("trigle.txt"); fin>>layer; // cout<<layer;
int i,j; //initial max trigle
for(i=0;i<100;i++) for(j=0;j<100;j++) tri_max[i][j]=-1; for(i=0;i<layer;i++) { for(j=0;j<i+1;j++) { fin>>tri[i][j]; } } int sum = maxpath(0,0); cout<<"the sum of max path is:"<<sum<<endl; cout<<"the column of the path is :"; for(i=0;i<layer;i++) { cout<<tri_col[i]+1<<"->"; } }