/*
* 算法思想: 动态规划
*/
int min(int a, int b){
return a<b ? a:b;
}
int minPathSum(int** arr, int m, int* ns){
if(!arr || !m || !ns[0]) return 0;
int i, j, dp[m][ns[0]];
//arr[0][]
for(i=0; i<m; i++){
for(j=0; j<ns[0]; j++){
dp[i][j] = INT_MAX;
}
}
for(i=0; i<m; i++){
for(j=0; j<ns[0]; j++){
if(j-1>=0) {
dp[i][j] = min(dp[i][j], dp[i][j-1]);
}
if(i-1>=0) {
dp[i][j] = min(dp[i][j], dp[i-1][j]);
}
if(dp[i][j] == INT_MAX){
dp[i][j] = arr[i][j];
}else
dp[i][j] += arr[i][j];
}
}
return dp[m-1][ns[0]-1];
}
leetcode-最小路径和-C语言
最新推荐文章于 2024-05-16 09:15:00 发布