第787题. K站中转内最便宜的航班
个人题解:动态规划求解问题
题目:
标签:
- 动态规划。
思路:
- 这道题是一道典型的动态规划题。看到最便宜航班这类字样就应该判断动态规划,而不是图论类算法。
- 判断这道题是动态规划而不是迪杰斯特拉算法,是一步关键思想。
- 随后需要判断:dp数组是几维?外层是什么?内层是什么?
- 外层根据分析,应该是中转次数。内层则是机场。
- 随后判断dp内容。这里很简单应该都是 Integer.MAX_VALUE 作为基础值。
- 最后一个难点是转移方程怎么写。经过思考后应该是:
dp[i][flights[j][1]] = Math.min(dp[i][flights[j][1]], dp[i - 1][flights[j][0]] + flights[j][2]);
题解:
class Solution {
public int findCheapestPrice(int n, int[][] flights, int src, int dst, int k) {
int length = flights.length;