https://leetcode.com/problems/largest-plus-sign/
class Solution {
public:
int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) {
int res = 0, cnt = 0;
vector<vector<int>> dp(N, vector<int>(N, 0));
set<int> s;
for(auto mine: mines) s.insert(mine[0]*N+mine[1]);//记录的都是0
for(int j=0; j<N; j++){
cnt = 0;
for(int i=0; i<N; i++){ //up
cnt = s.count(i*N+j)?0:cnt+1;
dp[i][j] = cnt;
}
cnt = 0;
for(int i=N-1; i>=0; i--){ //down
cnt = s.count(i*N+j)?0:cnt+1;
dp[i][j] = min(dp[i][j], cnt);
}
}
for(int i=0; i<N; i++){
cnt=0;
for(int j=0; j<N; j++){ //left
cnt = s.count(i*N+j)?0:cnt+1;
dp[i][j] = min(dp[i][j], cnt);
}
cnt=0;
for(int j=N-1; j>=0; j--){
cnt = s.count(i*N+j)?0:cnt+1;
dp[i][j] = min(dp[i][j], cnt);
res = max(res, dp[i][j]);
}
}
return res;
}
};