• 蓝桥杯 数字三角形


    问题描述
      (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
      径,使该路径所经过的数字的总和最大。
      ●每一步可沿左斜线向下或右斜线向下走;
      ●1<三角形行数≤100;
      ●三角形中的数字为整数0,1,…99;


      .
      (图3.1-1)
    输入格式
      文件中首先读到的是三角形的行数。

      接下来描述整个三角形
    输出格式
      最大总和(整数)
    样例输入
    5
    7
    3 8
    8 1 0
    2 7 4 4
    4 5 2 6 5
    样例输出
    30
     
     
     
     

    1.题目分析

    • 这是简单的动态规划题目,计算到每一层的每个结点的最大值。
    • 输出最后一层中值最大的那个结点的值。

    2.代码如下

    import java.util.*;;
    public class Main {
        
        private static int[][] nums;
        private static int[][] sums;
        public static void main(String[] args) {
            
            Scanner is=new Scanner(System.in);
            while(is.hasNextInt()) {
                int n=is.nextInt();
                nums=new int[n+1][];
                sums=new int[n+1][];
                
                for(int i=1;i<=n;i++) {
                    nums[i]=new int[i+1];
                    sums[i]=new int[i+1];
                    for(int j=1;j<=i;j++) {
                        nums[i][j]=is.nextInt();
                        int maxl=0;
                        if(exist(i-1,j-1,n)) {
                            maxl=sums[i-1][j-1];
                            if(exist(i-1,j,n))
                                maxl=max(maxl,sums[i-1][j]);
                        }else if(exist(i-1,j,n))
                            maxl=sums[i-1][j];
                        sums[i][j]=nums[i][j]+maxl;
                    }
                }
                int a=sums[n][1];
                for(int j=2;j<=n;j++)
                    a=a<sums[n][j]?sums[n][j]:a;
                System.out.println(a);
            }
            is.close();
        }
    
        private static boolean exist(int i,int j,int n) {
            if((i>=1&&i<=n)&&(j>=1&&j<=i))
                return true;
            return false;
        }
        private static int max(int a,int b) {
            return a>b?a:b;
        }
    
    }
  • 相关阅读:
    VS2013中使用码云gitee建立源代码管理
    win10激活出现错误0xc004f074 解决方案
    List<string> 去重复 并且出现次数最多的排前面
    jQuery.extend(),jQuery.fn.extend() 区别
    js 获取范围内的随机数
    xslt/xpath对不存在属性的判断问题
    查询各科成绩不合格与合格人数
    微信开发之实现一键拨号及短信发送功能
    Git 常用命令
    Excel 表 导入导出
  • 原文地址:https://www.cnblogs.com/lshao/p/8602753.html
Copyright © 2020-2023  润新知