花店橱窗设计c++编程语言
发布时间
阅读量:
阅读量
这道题其实并不难
首先,这道题目可以被视作是对数字三角形问题的进一步拓展。(若进行深入思考,这一理解是较为直观的)
状态:定义f[i][j]表示从起点至第i行第j列位置所获得的最大路径值;(该数值包含此前所有路径上的累计值)
随后便是具体的解题思路:
f[i + 1][k] = max(f[i + 1][k], f[i][j] + a[i + 1][k]);
首先,我们将状态转移方程呈现出来~~
接下来,我们以示例为基础进行说明:

初始阶段,我们需要将f[i][j]的值设定为a[i][j],因为在尚未进行任何操作的情况下,当前的最大值即为自身。
通过观察这张图表可以发现,当i等于1时,下一个可能的位置包括21、-4、10以及23这几个点;
由此可以看出,仅依靠两层循环来遍历每一个f[i][j]是无法满足需求的。在更新当前数值的过程中,还需要借助一层额外的循环来寻找最优解,因此需要再增加一层循环,具体的实现方式如下:
for (int i = 1; i <
全部评论 (0)
还没有任何评论哟~
