不难,知道曼哈顿距离的计算公式就可,思路比较直的做法就是,遍历每一个单元格,对快递分发点进行距离计算,每一次都需要进行比较距离长短作取舍。
因为,每个地方都能设置为中转站,所以也没有什么边界条件限制。
代码:
class Solution {
public:
int buildTransferStation(vector<vector<int>>& area) {
vector<pair<int,int>>sation;
for(int i=0;i<area.size();i++){
for(int j=0;j<area[i].size();j++){
if(area[i][j]==1)sation.push_back({i,j});//注意pair<int,int>的赋值写法
}
}
int min_dist=INT_MAX;
for(int i=0;i<area.size();i++){
for(int j=0;j<area[i].size();j++){
int tmp_dist=0;
for(int k=0;k<sation.size();k++){
tmp_dist+=abs(i-sation[k].first)+abs(j-sation[k].second);
}
if(min_dist >= tmp_dist )min_dist=tmp_dist;
}
}
return min_dist;
}
};