曼哈顿距离(Manhattan Distance)

文章目录

  • 1.定义
  • 2.例题
  • 总结


1.定义

曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离;对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西方向上旅行的距离,因此,曼哈顿距离又称为出租车距离。曼哈顿距离不是距离不变量,当坐标轴变动时,点间的距离就会不同。

例如在平面上,坐标(x1,y1)的i点与坐标(x2,y2)的j点的曼哈顿距离为:

d(i,j)=|x1-x2|+|y1-y2|.

2.例题

输入一个n,输出n阶菱形。n是奇数。 例如n = 9时:
曼哈顿距离(Manhattan Distance)_第1张图片
代码如下:

int main()
{
    int n;
    cin >> n;
    int cx = n/2, cy = n/2;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            if(abs(i-cx) + abs(j-cy) <= n/2)
                 cout << '*' ;
            else
               cout << ' ';
        }
        cout << endl;
    }
    return 0;
}

总结

观察菱形图,当n=5时,有" * “号的地方是距离中心点曼哈顿距离小于2的地方;当n=7时,有” * " 号的地方是距离中心点曼哈顿距离小于3的地方。找到中心点与n的关系:中心点用n表示为(n/2,n/2),将与中心点距离小于n/2的点用" * "表示,其他地方用空格表示,完成一行(一行指i的一次循环)后进行换行。

你可能感兴趣的:(曼哈顿距离(Manhattan Distance))