View Code of Problem 65

#include<stdio.h>	
int a[100][100];
int n,T;
int maxsum(int i,int j){
	if(i==n)               //边界条件,当抵达最后一行
	return a[i][j];               //递归 
	int a1=maxsum(i+1,j);
	int b1=maxsum(i+1,j+1);
	if(a1>b1)
	return a1+a[i][j];  //返回下一层最大值 
	else 
	return b1+a[i][j];
	} 
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		   for(int j=1;j<=i;j++)
		     scanf("%d",&a[i][j]); 
		printf("%d\n",maxsum(1,1)) ;
	} 
} 

Double click to view unformatted code.


Back to problem 65