题目链接
思路
dfs+记忆化搜索
代码
class Solution {
public:
int n;
vector<vector<int>>memo;
vector<int> shortestDistanceAfterQueries(int n, vector<vector<int>>& queries) {
this->n=n;
int t=queries.size();
memo.resize(n,vector<int>(t,-1));
vector<int>ans;
for(int i=0;i<t;i++){
ans.push_back(dfs(0,queries,i));
}
return ans;
}
int dfs(int num,const vector<vector<int>>& queries,int i){
if(memo[num][i]!=-1)return memo[num][i];
if(num==n-1)return 0;
int res=INT_MAX;
for(int j=0;j<=i;j++){
if(queries[j][0]==num){
res=min(res,dfs(queries[j][1],queries,i)+1);
}
}
return memo[num][i]=min(res,dfs(num+1,queries,i)+1);
}
};