首页 > 编程知识 正文

数字三角形问题动态规划,python循环打印数字三角形

时间:2023-05-05 00:04:08 阅读:150590 作者:4220

主题说明:

计算从三角形顶部到底部的路径,使路径通过的数字总和最大化。 每个数字可以选择左或右下方向。 例如,下图中的"3"可以选择数字"8"或"1",但不能选择数字"0"和数字"9"。)。

7

3() ) ) ) ) ) ) ) )0)

8 1 0

() )

526 ) ) ) ) )

注意:

1、不要选择每层中数值最大的。

2、在满足条件的路径中,而不是选择数值最大的路径。

3、上面两种说法有区别。

PS :

第一次看到这个主题,也许可以理解为注意事项的第一点,但仔细想想这个错误的理解,

换个说法,实际上被错误地理解为注意事项中的第二点。 通过很好地利用这两个错误,可以实现以下算法。

算法:

如果这个三角形只有一个数字,结果就是:

如果这个三角形只有3个数字,那么结果是: max(,)

如果这个三角形只有6个数字,那么结果是:max(max(, ),max ), ) )

代码实现:

#包含

#包含

#包含

#define MAX 100 1

#define Route '/home/wahaha/桌面/123 '

using namespace std;

int num[MAX][MAX],n; //n代表层数h代表行数l代表列数

intway(inth,int l ) )。

{

return h==n? num [ h ] [ l ] 3360 num [ h ] [ l ] max (way (h1,l ),way (h1,l 1 ) );

}

入主(void ) )。

{

memset(num,0,sizeof ) num );

freopen(route,' r ',stdin );

wile(Cinn ) )。

{

for(inth=1; h=n; h )

for(intL=1; l=h; l () ) ) ) ) )。

cinnum[h][l];

计数(1,1 ) )。

}

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。