【欧拉计划】problem18最大路径和01

题目地址

思路:求从第一层到最后一层中相邻元素值的最大值,既然是求从起始到最后的最大值,那么每层求出来的结果都是当前最大值,也就是符合求解过程中最优结果的过程,就是动态规划。
对给出的案例进行观察,可以得出动态转移方程,从最下层往上计算求出结果。

package com.twenty; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Exercise18 { public static void main(String[] args) throws IOException { //从文件中读取数据 BufferedReader br = new BufferedReader(new FileReader("Project Euler/data18.txt")); int[][] strings = new int[17][17]; String str = ""; int j = 1; //层数 while((str = br.readLine())!=null) { //将获取到的一层数据分隔的到字符串数组 String[] split = str.split(" "); for(int i=0;i<split.length;i++) { strings[j][i] = Integer.parseInt(split[i]); } //层数加一 j++; } for(int m=15;m>=1;m--) { //层数从高到低 for(int n=0;n<=14;n++) {//从左到右 //动态转移方程 strings[m][n] = Math.max(strings[m+1][n],strings[m+1][n+1])+strings[m][n]; } } System.out.println(strings[1][0]); } }

__EOF__

本文作者lnnau
本文链接https://www.cnblogs.com/wlunan/p/15948467.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Lnnau  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示