题意

写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。

分析

这题我是用顺推法来做的

按三角形的行划分阶段,若行数为 n,则可把问题看做一个n-1个阶段的决策问题。先求第2行各元素到起点的最大和,再依次求出第3,4,5,......,.n-1,n到起点的最大和,最后找第n行的最大值设f[i,j]为第i行第j列上点到起点的最大和,状态转移方程为:

则 f[1,1]=a[1,1];

f[i,1]=a[i,1]+f[i-1,1];

f[i,j]=max{a[i,j]+f[i-1,j-1],a[i,j]+f[i-1,j]}   2<=j<=i

max(f[n,1],f[n,2],.......,f[n,n]}即为所求。

var
n,i,j,maxsum:longint;
a,f:array[1..1000,1..1000]of longint;
begin
    readln(n);
    for i:=1 to n do
    for j:=1 to i do
    read(a[i,j]);
    f[1,1]:=a[1,1];
    for i:=2 to n do
    begin
        f[i,1]:=a[i,1]+f[i-1,1];
        for j:=2 to i do
        if f[i-1,j-1]>f[i-1,j] then f[i,j]:=a[i,j]+f[i-1,j-1] else
        f[i,j]:=a[i,j]+f[i-1,j];
    end;
    maxsum:=0;
    for i:=1 to n do
    if f[n,i]>maxsum then maxsum:=f[n,i];
    write(maxsum);
end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500180.html

数字三角形:顺推法(二维数组)相关推荐

  1. 数字三角形:顺推法(一维数组)

    题意 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 分析 f[j] 表示第i行第j个位置上的数到顶点的最大值. F[j]=ma ...

  2. c语言对用下标法二维数组遍历,二维数组遍历:下标法与指针法的较量

    在图像的采集中,常常需要用到二维数组,这里数组的遍历是指按照一定的顺序访问数组中所有的元素. 在众多的遍历方法中,下标法和指针法是两种常用的方法.但在使用的时候,我们只需要选择其中的一种,那么如何选择 ...

  3. 【Java】 杨辉三角 二维数组打印杨辉三角

    Tips 打印三角的操作 : 每行打印前预留空格 打印指定数量的星号后换行 重复循环打印直至完成所有打印结果 杨辉三角: 三角规律空格最大对称值为 5 大于 5 则会变形 三角规律为当前值为上一个值加 ...

  4. 二维数组作为参数,传入函数(最好用的)

    二维数组作为参数,传入函数(最好用的) 很多时候我都是直接通过传入一个 固定的数字来传递一个二维数组, 比如这样子定义函数 int fun(int a[][3],int n) 调用函数是 fun(a, ...

  5. 《剑指offer》——04. 二维数组中的查找——暴力法、线性查找——java实现

    文章目录 1.题目描述 2.解决方法 (1)暴力法 (2)线性查找(右上角->左下角) 参考: 1.题目描述 2.解决方法 (1)暴力法 如果不考虑二维数组排好序的特点,则直接遍历整个二维数组的 ...

  6. 《剑指offer》--二维数组中的查找、从头到尾打印链表、重建二叉树、旋转数组的最小数字

    一.二维数值中的查找: 1.题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数 ...

  7. Java黑皮书课后题第8章:**8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平、垂直、对角线方向都可以)。编写一个测试程序,提示用户输入一个数组

    **8.19(模式识别:四个连续相等的数)编写下面的方法,测试一个二维数组是否有四个连续相等的数字(水平.垂直.对角线方向都可以).编写一个测试程序,提示用户输入一个数组 题目 题目描述与运行实例 破 ...

  8. c#给定二维数组按升序排序_在数组中按升序对数字进行排序| 8086微处理器

    c#给定二维数组按升序排序 Problem: Write a program in 8086 microprocessor to sort numbers in ascending order in ...

  9. C语言 杨氏矩阵,二维数组查找数字。

    杨氏矩阵:有一个二维数组.,数组的每行从左到右是递增的,每列从上到下是递增的:在这样的数组中查找一个数字是否存在. #include<stdio.h> void my_resear(int ...

最新文章

  1. 读农民工兄弟学C#文章后的感觉
  2. 手把手教你分析MySQL死锁问题,十分钟看完文章下次轻松完成不加班
  3. 初始化列表的使用(十五)
  4. 吃亏是福--创业[3]
  5. iOS面试题总结 二
  6. Kubectl get pods 一直处于 Status:containerCreating
  7. 【CyberSecurityLearning 42】日志记录规则
  8. 【问链-Eos公开课】第四课 EOS 的钱包创建、导入私钥
  9. oracle 批量读,Oracle批量读取数据和批量绑定
  10. Eclipse用法和技巧十二:快速复制一行
  11. 基于事件的异步模式概述
  12. android 系统的切图方式_Android UI设计及切图
  13. 英特尔图形安装程序的linux,如何在我的系统中安装英特尔图形驱动程序?
  14. 2018二月安恒月赛WRITE UP
  15. 利用Pano2VR在全景图中添加视频,音频,图片
  16. CF1071C. Triple Flips
  17. 从技术走向管理——李元芳履职记
  18. 上市公司9月23日晚间公告速递
  19. steam邮箱登录教程
  20. 相关系数与决定系数的关系

热门文章

  1. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
  2. 为TIF、JPG图片添加地理坐标/平面直角坐标
  3. vs2010没有 最近使用的项目和解决方案
  4. 技术贴]强大的DELPHI RTTI–兼谈需要了解多种开发语言
  5. BUUCTF-Reverse:reverse3
  6. JDBC修改数据库(Object类的应用)
  7. stm32 外部中断学习
  8. cmake跨平台编译之判断操作系统平台、32位64位系统
  9. 转发:听老罗讲这一代人的学习方法有感
  10. 数据结构:表达式之中缀转后缀