Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- void cond(vector<vector<int>>& heights,vector<vector<int>> & visited,int i,int j,int k){
- if(visited[i][j]!=1){
- visited[i][j]=1;
- vector<vector<int>> dir={{0,1},{0,-1},{1,0},{-1,0}};
- for(auto iter:dir){
- if(i+iter[0]>=0&&i+iter[0]<heights.size()&&j+iter[1]>=0&&j+iter[1]<heights[0].size()){
- if(abs(heights[i][j]-heights[i+iter[0]][j+iter[1]])<=k){
- cout<<i<<":"<<j<<":"<<i+iter[0]<<":"<<j+iter[1]<<' ';
- cond(heights,visited,i+iter[0],j+iter[1],k);
- }
- }
- }
- }
- }
- int b_s(vector<vector<int>>& heights,int left,int right){
- int mid=left+right;
- mid/=2;
- while(left<right){
- mid=left+right;
- mid/=2;
- cout<<mid<<' ';
- vector<vector<int>> visited(heights.size(),vector<int>(heights[0].size(),0));
- cond(heights,visited,0,0,mid);
- if(visited[heights.size()-1][heights[0].size()-1]==1){
- return b_s(heights,left,mid);
- }else{
- return b_s(heights,mid+1,right);
- }
- }
- return mid;
- }
- int minimumEffortPath(vector<vector<int>>& heights) {
- vector<vector<int>> visited(heights.size(),vector<int>(heights[0].size(),0));
- cond(heights,visited,0,0,1);
- cout<<visited[heights.size()-1][heights[0].size()-1];
- cond(heights,visited,0,0,2);
- cout<<visited[heights.size()-1][heights[0].size()-1];
- cond(heights,visited,0,0,3);
- cout<<visited[heights.size()-1][heights[0].size()-1];
- cond(heights,visited,0,0,4);
- cout<<visited[heights.size()-1][heights[0].size()-1];
- cond(heights,visited,0,0,5);
- cout<<visited[heights.size()-1][heights[0].size()-1];
- // cout<<b_s(visited,0,10000000);
- return 0;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement