数塔从顶部出发,在每一结点可选择左下或右下走,一直走到底层,找出一条路径使数值最大
输入:
4
7
2 3
4 5 7
1 12 4 8
输出:
27
#include <bits/stdc++.h>
using namespace std;
int n,a[101][101];
int maxsum(int x,int y)
{
if(x==n-1)
return a[x][y];//最后一行
int c,d;
c=maxsum(x+1,y);
d=maxsum(x+1,y+1);
return max(c,d)+a[x][y];
} //递归,返回和最大值
int main()
{
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<=i;j++)
cin>>a[i][j];
cout<<maxsum(0,0);
return 0;
}