给定一个矩阵m,从左上角开始每次只能向右走或者向下走,最后达到右下角的位置
/*
* 给定一个矩阵m,从左上角开始每次只能向右走或者向下走,最后达到右下角的位置,
* 路径中所有数字累加起来就是路径和,返回所有路径的最小路径和,如果给定的m如下,那么路径1,3,1,0,6,1,0就是最小路径和,返回12.
1 3 5 9
8 1 3 4
5 0 6 1
8 8 4 0
分析: 对于这个题目,假设m是m行n列的矩阵,那么我们用dp[m][n]来抽象这个问题,
dp[]i]表示的是从原点到i,j位置的最短路径和。我们首先计算第一行和第一列,直接累加即可,
那么对于其他位置,要么是从它左边的位置达到,要么是从上边的位置达到,我们取左边和上边的较小值,然后加上当前的路径值
*/
/*
得到的公式如下
m(0,0) if(i==0 && j==0)
dp(i,j-1)+m(i,j) if(i==0)
dp(i-1,j)+m(i,j) if(j==0)
min{dp(i,j-1)+m(i,j),dp(i-1,j)+m(i,j)} else
*/
public class MaritixMin {public static int minDis(int[][] m) {int [][] dp = new int[4+1][4+1];dp[0][0] = m[0][0];for (int i = 1; i < m.length; i++) {for (int j = 1; j < m[0].length; j++) {if(i==1) {dp[i][j] = dp[i][j-1]+m[i][j];}else if(j==1) {dp[i][j] = dp[i-1][j] +m[i][j];}else {int temp1 = dp[i][j-1]+m[i][j];int temp2 = dp[i-1][j]+m[i][j];int min = temp1<temp2?temp1:temp2;dp[i][j] = min;}}}return dp[m[0].length-1][m.length-1];}public static void main(String[] args) {int[][] martix = {{0,0,0,0,0},{0,1,3,5,9},{0,8,1,3,5},{0,5,0,6,1},{0,8,8,4,0}};System.out.println("最右下的最短路径为:"+minDis(martix));}
}
给定一个矩阵m,从左上角开始每次只能向右走或者向下走,最后达到右下角的位置相关推荐
- [分支限界]给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
分支限界解最短路径 问题描述: 要求: 随机数算法 分支限界算法 程序源码 问题描述: 给定一个m行n列的矩阵,从左上角开始每次只能向右或向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这 ...
- 给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
题目描述 给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和. 思路: 1.排列组合 要从A到B,必须向左走6 ...
- 给定一个矩阵m*n,从左上角开始每次只能向右和向下走,最后到右下角的位置共有多少种路径。
#include <bits/stdc++.h> using namespace std; /* 每次只能向右或向下走 dp[m][n] = dp[m-1][n]+dp[m][ ...
- [算法]给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
很经典的一道题 等同于:https://leetcode-cn.com/problems/unique-paths/ 在完美世界面试中遇到了. 每次都只能向右或者向下走,求出所有种情况. 当时想到的思 ...
- 一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子
格子路径 题目: 在一个 2×2 的栅格中,从左上角出来,只能向右或向下移动,总共有 6 条路径可以到达栅格的右下角: 求m*n的网格中,有多少条移动路径? 以一个 20×20 的栅格为例,它有137 ...
- java一次能迈一级或两级台阶_有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?...
有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完? 相关问题: (1)有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台 ...
- 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法. 给定一个正整数int n,请返回一个数,代表上楼的方式数.保证n小于等于10 ...
- 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现. 输入: 输入一个整数M(1<=M<=20),表示楼梯的级数. 输出: 输出不同走法 ...
- 超级楼梯——有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法?
有一楼梯共n级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第n级,共有多少种走法? 现在给你一个正整数n(0<n<40),请你输出不同的走法数. 如n=2,则输出1(你只有一种走 ...
最新文章
- arcgis下的python编程-面向ArcGIS的Python脚本编程
- php 获取动态时间,PHP 显示动态时间
- Docker在服务器之间怎样导入导出镜像(服务器之间容器复制)
- SQL SERVER 跨服务器查询
- 设置最小值与最大值 css,一文学会使用 CSS 中的 min(), max(), clamp() 以及它们的使用场景...
- git pull 报错:Untracked Fles Preventing Merge
- IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡
- Java编辑环境搭建
- 1788:Pell数列
- linux下keepalived+nginx的负载均衡搭建
- J - R u really ready?(CCRC 18)动态规划
- 打印预览的时候,总是会多于一个空白页,怎么办?
- 域策略(3)——限制用户使用USB移动存储设备
- 【已解决】python 使用xlrd,xlwt 修改execl单元格的背景色
- 【android】喜马拉雅FM sdk使用
- VUE前端二级部门联动下拉菜单
- 机房温度过高应这样预防
- mongo update批量更新
- 卷积神经网络在句子分类上的应用[翻译]
- ELK入门(十八)——Kibana APM server安装部署