class EscapeFromRectangle { public: int shortest(int x, int y, int w, int h) { int r = 1 << 25; r = min(r, x); r = min(r, abs(x-w)); r = min(r, y); r = min(r, abs(h-y)); return r; } };500
class MatchNumbersEasy { public: string maxNumber(vector <int> m, int n) { const int N = 50 + 2; const int D = 50 + 2; string t[N][D]; fill(&t[0][0], &t[N-1][D], "$"); t[n][0] = ""; for(int i=n; 0<=i; --i){ for(int j=0; j<D; ++j){ if(t[i][j] == "$")continue; for(int k=0; k<m.size(); ++k){ if(i < m[k])continue; t[i-m[k]][j+1] = max(t[i-m[k]][j+1], t[i][j] + string(1, '0' + k)); } } } for(int i=D-1; 0<=i; --i){ string s = "$"; for(int j=0; j<N; ++j){ if(t[j][i][0] == '0')continue; s = max(s, t[j][i]); } if(s != "$")return s; } return "0"; } };1000
直感にまかせて描いたら通った。
class MatrixTransforming { public: void change(vector<string> &v, int i, int j){ for(int k=0; k<3; ++k){ for(int l=0; l<3; ++l){ v[i+k][j+l] = '0' + (v[i+k][j+l] == '0'); } } return ; } int minPushes(vector <string> a, vector <string> b) { int r = 0; for(int i=0; i+2<a.size(); ++i){ for(int j=0; j+2<a[i].size(); ++j){ if(a[i][j] != b[i][j]){ change(a, i, j); ++r; } } } for(int i=0; i<a.size(); ++i){ if(a[i] != b[i]){ r = -1; break; } } return r; } };
0 件のコメント :
コメントを投稿