Fetch the repository succeeded.
package Algorithm.dynamic;
import Common.Utils.MathTools;
/**
* @author 蔚蔚樱
* @version 1.0
* @date 2019-11-25 17:00
* @author—Email micromicrohard@outlook.com
* @description 已知一个二维数组,其中存储了非负整数,
* 找到从左上角到右下角的一条路径,使得路径上的和最小。(移动过程中只能向下或向右)
* @blogURL
*/
public class MiniValuePathofMatrix {
public int method(int[][] matrix) {
//检查数组是否为null,检查数组是否为矩形
if (!MathTools.judgeIsRectangle(matrix)) {
return -1;
}
int matrixLength = matrix.length;
//检查是否仅含有一个数组
if (matrixLength == 1 && matrix[0].length == 1) {
return matrix[0][0];
}
//initial
int[][] bestMatrix = new int[matrixLength][matrixLength];
bestMatrix[0][0] = matrix[0][0];
for (int i = 1; i < matrixLength; i++) {
bestMatrix[0][i] = bestMatrix[0][i - 1] + matrix[0][i];
bestMatrix[i][0] = bestMatrix[i - 1][0] + matrix[i][0];
}
//状态转移方程
for (int i = 1; i < matrixLength; i++) {
for (int j = 1; j < matrixLength; j++) {
bestMatrix[i][j] = Math.min(bestMatrix[i][j - 1], bestMatrix[i - 1][j]) + matrix[i][j];
}
}
return bestMatrix[matrixLength - 1][matrixLength - 1];
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。