22 lines
765 B
C
22 lines
765 B
C
#define MIN(a, b) (a > b ? b : a)
|
|
int minPathSum(int** grid, int gridRowSize, int gridColSize) {
|
|
int** dp = malloc(sizeof(int*) * gridRowSize);
|
|
for (int i = 0; i < gridRowSize; i++) {
|
|
dp[i] = malloc(sizeof(int) * gridColSize);
|
|
}
|
|
for (int m = 0; m < gridRowSize; m++) {
|
|
for (int n = 0; n < gridColSize; n++) {
|
|
if (m == 0 && n == 0) {
|
|
dp[m][n] = grid[m][n];
|
|
} else if (m == 0) {
|
|
dp[m][n] = dp[m][n - 1] + grid[m][n];
|
|
} else if (n == 0) {
|
|
dp[m][n] = dp[m - 1][n] + grid[m][n];
|
|
} else {
|
|
dp[m][n] = MIN(dp[m - 1][n], dp[m][n - 1]) + grid[m][n];
|
|
}
|
|
}
|
|
}
|
|
return dp[gridRowSize - 1][gridColSize - 1];
|
|
}
|