类似于leetcode 62,63,https://blog.csdn.net/u013263891/article/details/84594206
https://blog.csdn.net/u013263891/article/details/84594645
使用动态规划可简单的解决,数组中存放的是第一个位置到该位置所需要的最小的路径,第一行第一列的最小为当前的次数加上前面的最小路径 比如 上面的数组 第一行第二列的值应为1+3=4
而对于不是第一行和第一列 数组值为[i-1][j]+[i][j] 和[i][j-1]+[i][j]中较小的一个
比如上面数组得出的路径最小数组为
[1,1+3=4,4+1=5]
[1+1=2,min{1+5,3+5}=6,min{5+1,6+1}=6]
[2+2=4,min{4+2,6+2}=6,min{6+1,6+1}=7]
输出数组最后一个值即为最短路径
int minPathSum(std::vector<std::vector<int>>& grid) {
std::vector<std::vector<int>> cc;
std::vector<int>v;
int m=grid.size();
int n=grid[0].size();
for(int i=1;i<m;i++){
grid[i][0]+=grid[i-1][0];
}
for(int i=1;i<n;i++){
grid[0][i]+=grid[0][i-1];
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
grid[i][j]=std::min(grid[i][j]+grid[i-1][j],grid[i][j]+grid[i][j-1]);
}
}
return grid[m-1][n-1];
}