算法: 动态规划 寻找2D矩阵中到达某一坐标的最小代价路径

本文探讨了一种使用动态规划求解2D矩阵中从起点(0, 0)到目标点(x, y)的最小代价路径的问题。在矩阵中,每次只能向下或向右移动。分析了特殊坐标的代价,并提出自底向上的解法。" 108044131,10006020,快速傅里叶变换与多项式乘法,"['快速傅立叶变换', '算法', '数学', '信号处理', '数值计算']
摘要由CSDN通过智能技术生成
dp基础问题: 寻找2D矩阵中到达某一点的最小代价路径
问题描述:

给定一个二维数组 Cost[i][j] 表示访问坐标为 (i, j) 的代价。求解从 (0, 0) 开始,访问到 (x, y) 的最小代价。在矩阵中,你每次只能往下或者往右移动一个单位。且所有代价都是正整数。

问题分析:

由于限制条件中的只能往右或者往下移动,易得到达某坐标的最小代价公式可写作:

MinCost(i, j) = min(MinCost(i - 1, j), MinCost(i, j - 1)) + Cost[i][j]

现在继续分解问题,从坐标(0, 0)开始移动,可以注意到有两种特殊的坐标:

  1. 横坐标为0的坐标,即最上方(topmost)的坐标
  2. 纵坐标为0的坐标,即最左边(leftmost)的坐标

把第一种坐标拿出来分析, 由于限制条件,这类坐标的代价为:

MinCost(0, j) = MinCost(0, j - 1) + Cost[0,j]

可知到达这类坐标的代价是唯一可知的。同理最左的坐标同样是唯一可知的。

而知道矩阵最外两边的坐标代价之后,通过层层往里的最小代价求解,可逐个求出所有坐标的最小代价。

因此,需要的所有信息都已经得到,可以开始写解法了。

算法:
/**
 * 
 * @param {int[][]} Cost 
 * @param {int} x 
 * @param {int} y 
 */
var twodimensional = function(Cost, x, y) {
   
  // construc MinCost dp 2-dimensional-matrix
  var MinCost = new Array()
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值