#987. [蓝桥杯]曼哈顿距离

[蓝桥杯]曼哈顿距离

步骤一: 找到图的中心坐标。 int centerx=n/2+1,centery=n/2+1;

image

步骤二: 图的中心坐标向四周,字母是按照曼哈顿距离展开的。

曼哈顿距离定义为:

d(A,B)=x1x2+y1y2d(A,B)=|x_1-x_2|+|y_1-y_2|

int d=abs(i-centerx)+abs(j-centery)

image

(曼哈顿距离,又称为"城市街区距离”,是一种计算几何中两点之间距离的方法。它的定义是:在平面上,两点间的曼哈顿距离等于它们坐标差的绝对值之和。具体来说,如果点 A 的坐标是(x1,y1),点 B 的坐标是(x2,y2),那么它们之间的曼哈顿距离就是|x1 - x2|+ |y1 - y2|。)

步骤三: 点的判断,是在距离内还是超距离,在距离内判定输出那个字符,然后输出。不在距离内,超出距离就输出'.'。

int d = abs(-centerx) + abs(centery);
if (d > dta || d > n / 2)
    cout << '.';
else
    cout << char('A' + dta - d);