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 import java.text.DecimalFormat;
     2 import java.text.NumberFormat;
     3 import java.util.ArrayList;
     4 import java.util.Scanner;
     5 import java.util.Stack;  
     6     public class Main{   
     7         public static int n;
     8         public static void main(String[] args){  
     9             Scanner input = new Scanner(System.in);
    10             n = input.nextInt();
    11             int[][] a = new int[n][n];
    12             for(int i=0;i<n;i++){
    13                 for(int j=0;j<=i;j++){
    14                     a[i][j] = input.nextInt();
    15                 }
    16             }
    17             int max = max(0,0,a);
    18             System.out.println(max);
    19         }
    20         public static int max(int i,int j,int a[][]){
    21             if(i==n-2){
    22                 return a[i][j]+Math.max(a[i+1][j], a[i+1][j+1]);
    23             }else{
    24                 return a[i][j]+Math.max(max(i+1,j,a), max(i+1,j+1,a));
    25             }
    26         }
    27  }  
    循环:
     1 import java.text.DecimalFormat;
     2 import java.text.NumberFormat;
     3 import java.util.ArrayList;
     4 import java.util.Scanner;
     5 import java.util.Stack;  
     6 
     7     public class Main{   
     8         public static void main(String[] args){  
     9             Scanner input = new Scanner(System.in);
    10             int n = input.nextInt();
    11             int[][] a = new int[n][n];
    12             for(int i=0;i<n;i++){
    13                 for(int j=0;j<=i;j++){
    14                     a[i][j] = input.nextInt();
    15                 }
    16             }
    17             int max = 0;
    18             int sum = 0;
    19             for(int i=n-2;i>=0;i--){
    20                 for(int j=0;j<=i;j++){
    21                     a[i][j] = Math.max(a[i+1][j], a[i+1][j+1])+a[i][j];
    22                 }
    23             }
    24             System.out.println(a[0][0]);
    25             
    26         }
    27  }  

  • 相关阅读:
    CodeForces 639C Bear and Polynomials
    CodeForces 149E Martian Strings exkmp
    CodeForces 85D Sum of Medians Splay | 线段树
    CodeForces 149D Coloring Brackets
    CodeForces 526D Om Nom and Necklace
    CodeForces 875 D High Cry
    CodeForces 1018B The hat
    springMVC工程使用jreloader实现热部署
    ssh方式与服务器建立连接
    Weblogic在Linux下启动特别慢及进入控制台慢的解决方法
  • 原文地址:https://www.cnblogs.com/lolybj/p/6517208.html
Copyright © 2011-2022 走看看