zoukankan      html  css  js  c++  java
  • 数字三角形:顺推法(二维数组)

    题意

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


    分析

    这题我是用顺推法来做的

    按三角形的行划分阶段,若行数为 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.

  • 相关阅读:
    Mac OS X 下安装Raspbian系统
    Tiny4412 uboot Makefile 分析
    Tiny4412增强版底板串口电路与设置
    为Debian搞定Mercury MW150US无线网卡驱动
    树莓派的启动过程
    xml格式转换为Bean
    j2ee之hibernate工具类
    验证码代码
    j2ee之AJAX的二级联动
    j2ee之原生AJAX
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500180.html
Copyright © 2011-2022 走看看