Python编程输出数字三角形,用c语言输出一个等腰三角形
标题描述描述
下图显示了一个数字三角形。请写一个程序,计算一条从上到下某处的路径,使该路径经过的数字之和最大化。
(1)每一步都可以跟随左斜杠向下或右斜杠向下。
(2)1排100个三角形
(3)三角形的数字是0,1,…99。
输入描述输入描述。
有许多测试案例。对于每个测试用例,通过键盘逐行输入。第一行是输入的整数(如果整数为0,表示结束,不需要进一步处理),表示三角形行数N,后面是N行的个数。
输出描述输出描述
输出最大值。
样本输入样本输入
五
七
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样本输出样本输出
30
思路:用动态编程建立一个二维数组dp。
dp数组中的数值表示到达当前节点的累积最大值。动态规划要解决的问题必然是在每个子问题上得到最优解(称为最优子结构)。
row=int(input())
如果row==0:
打印(0)
否则:
dp=[[0表示范围内的I(第1行)]表示范围内的j(第1行)]
#用Python创建2D列表
对于范围内的I(世界其他地区):
line=input()。拆分()
对于范围(I ^ 1)中的j:
dp[i 1][j 1]=int(line[j])
#打印(dp)
对于范围内的k(第2行第1行):
对于范围(1,k-1)中的p:
dp[k][p]=max(dp[k-1][p-1],dp[k-1][p]) dp[k][p]
last=dp[-1]
最大值=-1
对于最后的elem:
如果elemmax:
max=elem
打印(最大)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。