#include <cstdio> #include <iostream> using namespace std; int nums[1001][1001]; int maxll(int i,int j){ int sum=nums[i][j]; if(i==1){ return sum; } else{ int a=maxll(i-1,j); int b=a; if(j-1>0){ b=maxll(i-1,j-1); } if(a>=b) return a+sum; else return b+sum; } } int main(){ int t; cin>>t; while(t--){ nums[1001][1001]={0}; int row; cin>>row; for(int i=1;i<=row;i++){ for(int j=1;j<=i;j++){ cin>>nums[i][j]; } }//输入 int max=0; for(int i=1;i<=row;i++){//最后一层的每个元素到顶点谁 if(max<maxll(row,i)) max=maxll(row,i); } cout<<max<<endl; } } |
Double click to view unformatted code.