#987. [蓝桥杯]曼哈顿距离
[蓝桥杯]曼哈顿距离
步骤一:
找到图的中心坐标。
int centerx=n/2+1,centery=n/2+1;
步骤二: 图的中心坐标向四周,字母是按照曼哈顿距离展开的。
曼哈顿距离定义为:
int d=abs(i-centerx)+abs(j-centery)
(曼哈顿距离,又称为"城市街区距离”,是一种计算几何中两点之间距离的方法。它的定义是:在平面上,两点间的曼哈顿距离等于它们坐标差的绝对值之和。具体来说,如果点 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);