2024-03-19 02:45:09 +08:00

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];
}