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;
}
};
500class 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 件のコメント :
コメントを投稿