腾讯笔试-找矩阵路径最大值
2016-04-06 13:46
288 查看
题目:给定一个矩阵,矩阵每个点都有自己的值,现在求从左上点到右下点的最大值。
使用dp动态规划,找出每个点的最大值即可:
使用dp动态规划,找出每个点的最大值即可:
class mydp{ public int value; public String path=""; public mydp(int value,String path) { this.value = value; this.path=path; } public void setPath(String path) { this.path += (path+" "); } } public class FinaPathMatxValue { public static void main(String[] args) { int[][] test=new int[][]{{3,8,7,2},{4,3,1,5},{7,4,3,1},{5,1,6,4}}; System.out.println(findPathMaxValue(test).path); } private static mydp findPathMaxValue(int[][] test) { mydp[][] dp=new mydp[test.length][test[0].length]; dp[0][0]=new mydp(test[0][0],String.valueOf(test[0][0])); for (int i = 0; i < test.length; i++) { for (int j = 0; j < test[0].length; j++) { if (i==0&&j==0){ continue; } else if (j==0){ dp[i][j]=new mydp((dp[i-1][j].value+test[i][j]),dp[i-1][j].path+" "+String.valueOf(test[i][j])); } else if (i==0){ dp[i][j]=new mydp((dp[i][j-1].value+test[i][j]),dp[i][j-1].path+" "+String.valueOf(test[i][j])); } else { if (dp[i-1][j].value>dp[i][j-1].value){ dp[i][j]=new mydp((dp[i-1][j].value+test[i][j]),dp[i-1][j].path+" "+String.valueOf(test[i][j])); }else { dp[i][j]=new mydp((dp[i][j-1].value+test[i][j]),dp[i][j-1].path+" "+String.valueOf(test[i][j])); } } } } return dp[test.length-1][test[0].length-1]; } }
相关文章推荐
- How to Install Tomcat 7.0.68 Server on CentOS/RHEL 7/6/5
- Mockito单元测试-注解的详细使用
- Arraylist和linkedlist的性能测试
- ubuntu12.04搭建android开发环境
- 二维码扫描
- 保存数据到手机sd卡(QQ登录保存密码)
- [ios]使用Masonry为自定义view添加约束时,得先把自定义view添加到父视图上
- TestDataStream的用法
- Linux系统中对SSD硬盘优化的方法
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- linux下指定mysql数据库服务器主从同步的配置实例
- 设计模式之原型模式
- java IO字符流的使用记录
- Python--网页更新监控工具
- 网络爬虫开发技术——快速线程池爬虫
- 四则运算4
- 旅途的意义 ——《解忧杂货店》
- apache lucene介绍
- 各种数据库对应的jar包、驱动类名和URL格式
- CCF-ISBN号码