主页 > IT业界  > 

合理建模--最短路径

合理建模--最短路径

这道题目难就难在如何想到用最短路径来做 主要是这个题目不能用bfs来写,因为距离并不是1 狄克斯特拉算法很久没写了,有些地方生疏了 且这个题目需要记录三个信息,得用tuple


题目地址

int dx[] = {0,0,1,-1}; int dy[] = {1,-1,0,0}; class Solution { public: int minTimeToReach(vector<vector<int>>& moveTime) { int n = moveTime.size(); int m = moveTime[0].size(); vector<vector<int>> dis (n,vector<int> (m,0x3f3f3f3f)); priority_queue<tuple<int,int,int>,vector<tuple<int,int,int>>,greater<>> q; q.emplace(0,0,0); while(q.size()){ auto [d,i,j] = q.top(); q.pop(); if(i==n-1 && j == m-1){ return d; } if(dis[i][j]!=0x3f3f3f3f) continue; for(int k=0;k<4;k++){ int x = i+dx[k], y = j + dy[k]; if(x<0 || x >= n || y <0 || y>=m) continue; int now = max(d,moveTime[x][y]) + 1; if(now<dis[x][y]){ dis[x][y] = now; q.emplace(now,x,y); } } } return -1; } };
标签:

合理建模--最短路径由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“合理建模--最短路径