LeetCode Weekly Contest 156
問題文
省略
省略
C++に変換後のコードはこちら
#define main dummy_main
{}
#undef main
int N;
int q[20000], qs, qe;
int d[2][100][100];
int ok[2][100][100];
class Solution {
public:
int minimumMoves(vector<vector<int>>& mp) {
int i, j, k, mask, ni, nj, nk, r;
dimcomp3 c;
N = mp.size();
c.set(2,N,N);
rep(k,2) rep(i,N) rep(j,N) d[k][i][j] = -1;
d[0][0][0] = 0;
qs = qe = 0;
q[qe++] = 0;
rep(i,N) rep(j,N) ok[0][i][j] = ok[1][i][j] = 0;
rep(i,N) rep(j,N-1) if(mp[i][j]==mp[i][j+1]==0) ok[0][i][j] = 1;
rep(i,N-1) rep(j,N) if(mp[i][j]==mp[i+1][j]==0) ok[1][i][j] = 1;
while(qs < qe){
mask = q[qs++];
c(mask,k,i,j);
rep(r,3){
nk = if[r==0, k^1, k];
ni = if[r==1, i+1, i];
nj = if[r==2, j+1, j];
if(ni >= N || nj >= N) continue;
if(ok[nk][ni][nj] && d[nk][ni][nj]==-1){
if(r==0 && mp[ni+1][nj+1]==1) continue;
d[nk][ni][nj] = d[k][i][j] + 1;
q[qe++] = c(nk,ni,nj);
}
}
}
return d[0][N-1][N-2];
}
};
Current time: 2024年04月25日08時52分15秒
Last modified: 2019年10月06日03時37分38秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る
Logged in as: unknown user (not login)