山登り
class SilverDistance {
public:
int minSteps(int sx, int sy, int gx, int gy) {
int cnt = 0;
while( sx != gx || sy != gy ){
double dist[5];
int nx[5], ny[5];
const int dx[] = {-1, -1, 0, +1, +1};
const int dy[] = {-1, +1, 1, -1, +1};
for(int d=0; d<5; ++d){
nx[d] = sx + dx[d];
ny[d] = sy + dy[d];
double x = nx[d] - gx;
double y = ny[d] - gy;
dist[d] = sqrt( x * x + y * y );
}
int mn = min_element( dist, dist + 5 ) - dist;
sx = nx[mn];
sy = ny[mn];
++cnt;
}
return cnt;
}
};
0 件のコメント :
コメントを投稿