蓝桥杯-动态规划-java算法训练 数字三角形
2016-04-16 09:51
351 查看
问题描述
(图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
动态规划的思想源于递归,是一种问题转化策略。基于递归的问题转化策略有很 多,他们相互之间也不是很容易区分,其实讲半天动态规划是什么 ,感觉还是不会做题,还是需要多看一些例子 ,从中体会动态规划,也许这种思路说不出来,但是心里还是很清楚的,
希望能给大家一个参考 有更好的记得评论~~
(图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
动态规划的思想源于递归,是一种问题转化策略。基于递归的问题转化策略有很 多,他们相互之间也不是很容易区分,其实讲半天动态规划是什么 ,感觉还是不会做题,还是需要多看一些例子 ,从中体会动态规划,也许这种思路说不出来,但是心里还是很清楚的,
import java.util.Scanner; public class Main{ public static void main(String[]args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][]a = new int[n+1][((1+n)*n)/2+1]; for(int i=1 ; i<=n ; i++){ for(int j=1 ; j<=i ; j++){ a[i][j] = sc.nextInt(); } } for(int i=n ; i>=1 ; i--){ for(int j=1 ; j<=i-1 ; j++){ a[i-1][j]+= Math.max(a[i][j], a[i][j+1]); } } System.out.println(a[1][1]); } }
希望能给大家一个参考 有更好的记得评论~~
相关文章推荐
- MyEclipse 8.5 启动过程优化
- org.eclipse.swt.SWTError: No more handles的解决办法
- Java从键盘读入数据的三种常见方法
- java初级,窗口关闭与button与事件响应
- JSP实现数据库(MySQL)查询——Java Web练习(二)
- JVM(9)--Java 诊断工具:greys-anatomy
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
- spring+hibernate 配置hibernate中的hbm.xml文件位置
- JAVA学习笔记(五)
- java泛型的使用(六)在方法中使用泛型
- java泛型的使用(五)在接口中定义泛型
- java泛型的使用(四)设置泛型的时候,只能是Number或者Number的子类(int,float)等
- java泛型的使用(三)通配符的使用
- java泛型的使用(一)定义类时,使用泛型
- JDK的命令详解操作
- Java 集合类Collection、List
- 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
- 使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
- 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置