zoukankan      html  css  js  c++  java
  • 蓝桥杯 数字三角形

    问题描述
      (图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;
        }
    
    }
  • 相关阅读:
    JAVA THINGKING (二)随笔
    HP-UX磁带备份错误收集
    在cocos2d-x界面中嵌入Android的WebView
    PIMPL设计模式的理解和使用
    10453 Make Palindrome (dp)
    linux swap 分区调控(swap分区 lvm管理)
    如何让ios app支持32位和64位?
    数据持久化(二)存取沙箱文件
    [置顶] lvs-tun隧道模式搭建
    【D3.V3.js系列教程】--(十五)SVG基本图形绘制
  • 原文地址:https://www.cnblogs.com/lshao/p/8602753.html
Copyright © 2011-2022 走看看