给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。
注意:你每次只能向下或向右移动。
<?php
function minPathSum($arrGrid) {
$line = count($arrGrid);
$col = count($arrGrid[0]);
$arrOutput = array();
$arrOutput[0][0] = $arrGrid[0][0];
for ($i = 1; $i < $col; $i ++) {
$arrOutput[0][$i] = $arrOutput[0][$i - 1] + $arrGrid[0][$i];
}
for ($i = 1; $i < $line; $i ++) {
$arrOutput[$i][0] = $arrOutput[$i - 1][0] + $arrGrid[$i][0];
}
for ($i = 1; $i < $line; $i ++) {
for ($j = 1; $j < $col; $j ++) {
$arrOutput[$i][$j] = min($arrOutput[$i - 1][$j], $arrOutput[$i][$j - 1]) + $arrGrid[$i][$j];
}
}
return $arrOutput[$line - 1][$col - 1];
}
$arr = [
[1,2,3,4,5],
[1,1,3,4,5],
[2,1,6,7,8],
[3,1,1,1,1],
];
$ret = minPathSum($arr);
print $ret;