zoukankan      html  css  js  c++  java
  • 数塔取数

    基准时间限制:1 秒 空间限制:131072 KB
    一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。
    每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。
     
       5
      8 4
     3 6 9
    7 2 9 5
     
    例子中的最优方案是:5 + 8 + 6 + 9 = 28
     
    Input
    第1行:N,N为数塔的高度。(2 <= N <= 500)
    第2 - N + 1行:每行包括1层数塔的数字,第2行1个数,第3行2个数......第k+1行k个数。数与数之间用空格分隔(0 <= A[i] <= 10^5) 。
    Output
    输出最大值
    Input示例
    4
    5
    8 4
    3 6 9
    7 2 9 5
    Output示例
    28

    解析:

            显然,数塔的高度<=500,使用深搜一定会超时,那么我们就要换一种思路求解这道题目了。

            从下往上推出答案,对次一层的每个数来说,可以加上它下一层相邻两个数的最大值来更新本身,

            这样更新到第一层(即 a[0][0])的时候也就是最终的答案。

     1 #include <iostream>
     2 
     3 using namespace std;
     4 int a[505][505];
     5 
     6 int main(){
     7     int n;
     8     cin >> n;
     9     for(int i = 0; i < n; i++){
    10         for(int j = 0; j <= i; j++){
    11             cin >> a[i][j];
    12         }
    13     }
    14     for(int i = n - 2; i >= 0; i--){
    15         for(int j = 0; j <= i; j++){
    16             a[i][j] += max(a[i + 1][j], a[i + 1][j + 1]);
    17         }
    18     }
    19     cout << a[0][0] << endl;
    20 }
     
  • 相关阅读:
    FORM中的get post方法区别
    二叉树优势
    Map 排序
    ajax+MultipartFile上传文件到本地
    阿里巴巴开发手册
    poi快速导入导出excel表格
    String.trim()、.contains()等的作用
    eclipse导入ssm框架的项目,报tomcat无法启动的错误,如下:
    lesson5_oa文件操作
    lesson4_函数
  • 原文地址:https://www.cnblogs.com/jxust-jiege666/p/6700489.html
Copyright © 2011-2022 走看看