数塔-递归

数塔-递归

数塔

数塔就是由一堆数字组成的塔状结构,其中第一行1个数,第二行2个数,第三行3个数,依此类推。每个数都与下一层的左下与右下两个数相连接。这样从塔顶到塔底就可以有很多条路径可以走,现在需要求路径上的数字之和的最大值。

例如在上图中,5->8->12->10与5->3->16->11这两条路径上的数字之和都是35,是所有路径中的最大值。

输入描述

第一行一个正整数(1<=n<=20),表示数塔的层数。

接下来n行为数塔从上到下的每一层,其中第i层有i个正整数,每个数都不超过1000。

输出描述

从塔顶到塔底的所有路径中路径上数字之和的最大值。

样例1

输入

4

5

8 3

12 7 16

4 10 11 6

输出

35

**思路:**递归求解

#include

using namespace std;

int a[20][20];

int n;

int getmax(int x,int y){

if(x==n){

return a[x][y];

}

return max(getmax(x+1,y),getmax(x+1,y+1))+a[x][y];

}

int main(){

cin>>n;

for(int i=1;i<=n;i++){

for(int j=1;j<=i;j++){

cin>>a[i][j];

}

}

cout<

}

相关创作

鸭子下蛋下几天就停
下载365APP手机客户端

鸭子下蛋下几天就停

📅 09-25 👁️ 9421
汽车之家
365bet手机网址

汽车之家

📅 08-28 👁️ 2070