问题描述:
By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total from top to bottom is 23.
3
7 4
2 4 6
8 5 9 3
That is, 3 + 7 + 4 + 9 = 23.
Find the maximum total from top to bottom of the triangle below:
75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem 67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and requires a clever method! ;o)
解决方法:
public static long find_max_sum(int[][] numbers){
long result = 0;
long[][] sum = new long[numbers.length][numbers.length];
sum[0] = new long[3];Arrays.fill(sum[0], 0);
sum[0][0] = numbers[0][0];
for(int i=1; i<numbers.length; i++){
for(int j=0; j<numbers[i].length; j++){
if(j==0){
sum[i][j] = numbers[i][j] +sum[i-1][j];;
}else if(j==numbers[i].length-1){
sum[i][j] = numbers[i][j] +sum[i-1][j-1];
}else{
long sum1 = numbers[i][j] +sum[i-1][j];
long sum2 = numbers[i][j] +sum[i-1][j-1];
long large = sum1>sum2?sum1:sum2;
sum[i][j] = large;
}
}
}
for(int i=0; i<sum.length; i++){
for(int j=0; j<sum[i].length; j++){
System.out.printf("%10d", sum[i][j]);
}
System.out.println();
}
int row = sum.length-1;
result = sum[row][0];
for(int i=1; i<sum[row].length; i++){
if(result < sum[row][i])
result = sum[row][i];
}
return result;
}
分享到:
相关推荐
18. 10msec; d/s; no; no 19. a) 500 kbps b) 64 seconds c) 100kbps; 320 seconds 20. End system A breaks the large file into chunks. It adds header to each chunk, thereby generating multiple packets ...
18. 正则表达式过滤:REGEXP 操作符(Problem 18) REGEXP 操作符用于在 WHERE 子句中使用正则表达式过滤数据。 19. 数据操纵语句:SELECT、INSERT、UPDATE、DELETE 等(Problem 19) SQL 语言中的数据操纵语句...
- **语音信号——奈奎斯特速率**(Problem 18.65): 讨论了语音信号的采样率与奈奎斯特准则。 #### 四、计算机工具的应用 - **PSpice**:一种电路仿真软件,被广泛应用于教学与研究领域。本书在第三章介绍了PSpice,...
Chapter 18. Batch Operating System Chapter 19. Problem of Protection Chapter 20. Timing Program Execution Chapter 21. Efficiency of Batch Operating Systems Chapter 22. Convenience of the BOS Chapter ...
在第28题中,学生需要编写程序处理模糊矩阵,并将其作为输入传递给之前实现的程序,如`problem18.cpp`或`problem22.cpp`,以完成模糊矩阵的进一步处理。 最后,`fuzzy_matrix.h`中的`fuzzy_matrix`类展示了如何设计...
int M, g, a[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}, ag[20], c[20]; ``` - 初始化数组`a`,用于存储可能填入环中的数字。 - `ag`数组用于标记数字是否已被使用。 - `c`...
#### 第18章:C++11与容器(p.990) C++11是一个重要的语言标准,引入了许多新特性,包括改进的容器类型。本章重点介绍了C++11中容器的一些新特性和优化方法。 - **容器**:用于存储和管理元素的抽象数据类型。 - ...
Chapter 18. Stacks and Queues. Appendix A. Reserved Words. Appendix B. Operator Precedence. Appendix C. Character Sets. Appendix D. Operators Overloading. Appendix E. Additional C++ Topics. Appendix ...
CHAPTER 18: DIVIDE-AND-CONQUER, DECREASE-AND-CONQUER CHAPTER 19: DYNAMIC PROGRAMMING CHAPTER 20: BACKTRACKING AND BRANCH-AND-BOUND CHAPTER 21: COMPLEXITY THEORY AND NP COMPLETENESS CHAPTER 22: ...
#### Chapter 18: Advanced Topics This final chapter covers miscellaneous advanced topics: - **Advanced Algorithms**: Discussion of advanced algorithms, such as graph traversal and search algorithms....
#### 第18章:C++11 特性和容器 - **C++11 新特性**:介绍了C++11版本引入的新功能,如右值引用、自动类型推导、范围基础的for循环等。 - **容器**:讲解了C++11标准库中提供的新容器类型,如`unordered_map`、`...
C++ Programming: From Problem Analysis to Program Design By 作者: D. S. Malik ISBN-10 书号: 1337102083 ISBN-13 书号: 9781337102087 Edition 版本: 8 出版日期: 2017-02-13 pages 页数: 1491 Contents ...
【标题】"0-1-knapsack-problem-master (18).zip" 提到的是一个与优化问题相关的项目,具体来说是0-1背包问题的实现。0-1背包问题是一个经典的组合优化问题,常见于运筹学和计算机科学中,用于模拟资源分配和决策...
在这道题目中,给定一个数字n和另一个不大于10^18的数k,要求参赛者计算所有小于等于k的n阶生成矩阵的数量。生成矩阵是一个n*n的矩阵,其元素构成从1到n^2的连续整数。如果有两个矩阵通过旋转180度可以重合,则认为...
在"Hamming Problem"这个编程挑战中,我们需要找到一个特定的Hamming序列中的第i个数。Hamming序列是由三个质数p1, p2, 和 p3定义的,序列包含所有只被这三个质数之一整除的自然数,按递增顺序排列。 例如,给定...
Designing an efficient algorithm to solve a computer science problem is a skill of Computer programmer. This is the skill which tech companies like Google, Amazon, Microsoft, Adobe and many others ...
0-1 背包问题(0-1 Knapsack Problem)是计算机科学中的一个经典优化问题,尤其在算法设计和分析领域具有重要地位。它来源于实际生活中的物品打包问题,比如旅行者需要在给定的背包容量下,选择价值最大的物品放入...
该项目是一款基于Go语言的Container Problem Detect System异常检测器,源码包含2261个文件,涵盖1823个Go源文件、98个Markdown文件、51个Shell脚本文件、43个Git忽略文件、31个YAML配置文件、18个模板文件、14个...
// 获取userAgent// 是否是ie// 是否是IE9// 是否是edge浏览器// 是否是android浏览器// 是否是ios// 是否是谷歌浏览器