Qm={C1*Um1,C2*Um2}min

方法一:递归解法(超时)

right 表示當前向已右走的步数down 表示当前已向下走的步数,cur 表示当前走过的路径和

此方法超时,应该使用 (方法二)动态规划解法


  

由于路径的方向只能是向下或向右,因此网格的第一行的每个元素只能从左上角元素开始向右移动到达网格的第一列的每个元素只能从左上角元素開始向下移动到达,此时的路径是唯一的因此每个元素对应的最小路径和即为对应的路径上的数字总和。

对于不在第一行和第一列的元素可以从其上方相邻元素向下移动一步到达,或者从其左方相邻元素向右移动一步到达元素对应的最小路径和等于其上方相邻元素与其左方相邻元素两者对应的最小路径和中的最小值加上当前元素的值。由于每个元素对应的最小路径和与其相邻元素对应的最小路径和有關因此可以使用动态规划求解。

创建二维数组 dp与原始网格的大小相同,dp[i][j] 表示从左上角出发到 (i,j) 位置的最小路径和显然,dp[0][0]=grid[0][0]对于 dp 中的其餘元素,通过以下状态转移方程计算元素值

最后得到 dp[m-1][n-1] 的值,即为从网格左上角到网格右下角的最小路径和


  
  • 时间复杂度:O(m*n),其中 m 和 n 分别昰网格的行数和列数需要对整个网格遍历一次,计算 dp 的每个元素的值

  • 空间复杂度:O(m*n),其中 m 和 n 分别是网格的行数和列数创建一个二维數组 dpdp,和网格大小相同
    注:空间复杂度可以优化,例如每次只存储上一行的 dp 值则可以将空间复杂度优化到 O(n)。

附:4*4矩阵的16步完整过程示唎




附:完整代码(含测试用例)

第四章同步发电机的自动励磁调節装置

您还没有浏览的资料哦~

快去寻找自己想要的资料吧

您还没有收藏的资料哦~

收藏资料后可随时找到自己喜欢的内容

我要回帖

更多关于 手动是c1还是c2 的文章

 

随机推荐