init commit
This commit is contained in:
60
archive/algorithm/leetcode/120.c
Normal file
60
archive/algorithm/leetcode/120.c
Normal file
@ -0,0 +1,60 @@
|
||||
#define MIN(a, b) (a > b ? b : a)
|
||||
int minimumTotal(int **triangle, int triangleRowSize, int *triangleColSizes) {
|
||||
int **dp = malloc(sizeof(int *) * triangleRowSize), ret = 0;
|
||||
for (int i = 0; i < triangleRowSize; i++) {
|
||||
dp[i] = malloc(sizeof(int) * triangleRowSize);
|
||||
}
|
||||
dp[0][0] = triangle[0][0];
|
||||
for (int i = 1; i < triangleRowSize; i++) {
|
||||
for (int n = 0; n <= i; n++) {
|
||||
if (n == 0) {
|
||||
dp[i][n] = dp[i - 1][n];
|
||||
} else if (n == i) {
|
||||
dp[i][n] = dp[i - 1][n - 1];
|
||||
} else {
|
||||
dp[i][n] = MIN(dp[i - 1][n], dp[i - 1][n - 1]);
|
||||
}
|
||||
dp[i][n] += triangle[i][n];
|
||||
}
|
||||
}
|
||||
ret = dp[triangleRowSize - 1][0];
|
||||
for (int i = 1; i < triangleRowSize; i++) {
|
||||
ret = MIN(ret, dp[triangleRowSize - 1][i]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
int minimumSubTotal(int** triangle, int triangleRowSize, int *triangleColSizes, int level, int* minTotal) {
|
||||
int i = 0;
|
||||
int min = INT_MAX;
|
||||
int res = 0;
|
||||
int temp = 0;
|
||||
if(level == triangleRowSize - 1){
|
||||
for(i = 0; i <= level; i++){
|
||||
minTotal[i] = triangle[level][i];
|
||||
min = minTotal[i] < min ? minTotal[i] : min;
|
||||
}
|
||||
return min;
|
||||
}
|
||||
minimumSubTotal(triangle, triangleRowSize, triangleColSizes, level + 1, minTotal);
|
||||
|
||||
for(i = 0, temp = minTotal[0]; i <= level; i++){
|
||||
res = (temp > minTotal[i + 1] ? minTotal[i + 1] : temp) + triangle[level][i];
|
||||
temp = minTotal[i + 1];
|
||||
minTotal[i] = res;
|
||||
min = minTotal[i] < min ? minTotal[i] : min;
|
||||
}
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
int minimumTotal(int** triangle, int triangleRowSize, int *triangleColSizes) {
|
||||
int ret = 0;
|
||||
int* minTotal = (int*)malloc(sizeof(int) * triangleRowSize);
|
||||
ret = minimumSubTotal(triangle, triangleRowSize, triangleColSizes, 0, minTotal);
|
||||
free(minTotal);
|
||||
|
||||
return ret;
|
||||
}
|
||||
*/
|
Reference in New Issue
Block a user