【力扣 中等 C】983. 最低票价
目录
题目
解法一:动态规划(递归)
解法二:动态规划(迭代)
题目
待添加
解法一:动态规划(递归)
int min(int a, int b)
{return a < b ? a : b;
}int f(const int* days, int size1, const int* costs, const int* cDays, int size2,int index, int* dp)
{if (index == size1)return 0;if (dp[index] != INT_MAX)return dp[index];for (int i = 0; i < 3; i++){int nextIndex = index;while (nextIndex < size1 && days[index] + cDays[i] > days[nextIndex])nextIndex++;dp[index] = min(dp[index], costs[i] + f(days, size1, costs, cDays, size2, nextIndex, dp));}return dp[index];
}int compute(const int* days, int size1, const int* costs, int size2)
{const int cDays[3] = {1, 7, 30};int* dp = malloc(sizeof(*dp) * size1);for (int i = 0; i < size1; i++)dp[i] = INT_MAX;int minCharge = f(days, size1, costs, cDays, size2, 0, dp);free(dp);return minCharge;
}int mincostTickets(int* days, int daysSize, int* costs, int costsSize)
{return compute(days, daysSize, costs, costsSize);
}
解法二:动态规划(迭代)
待添加