View Code of Problem 65

#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.


Back to problem 65