问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【C++】二维曼哈顿距离(Manhattan)

创作时间:
作者:
@小白创作中心

【C++】二维曼哈顿距离(Manhattan)

引用
CSDN
1.
https://m.blog.csdn.net/Yinrtyu_/article/details/145971326

C++中曼哈顿距离的用法、图片和代码示例详细介绍如下

二维曼哈顿距离的用法

曼哈顿距离,又称为城市街区距离,用于计算两个点在标准坐标系上的绝对轴距总和。其公式为:
二维曼哈顿距离=∣x1−x2∣+∣y1−y2∣
曼哈顿距离常用于网格状布局的路径计算、图像处理等领域。

图片示例

描述一个常见的曼哈顿距离应用场景:
想象一个城市的街道布局,街道呈网格状,你只能沿着水平或垂直的街道行走。从一点A到另一点B的最短路径长度,就是这两点之间的曼哈顿距离。

在想象一下棋盘上的格子:

曼哈顿距离,也正是这个原理,不能像 绿线(/)一样,横穿建筑,而是需要和其它三条线一样, 穿过大街小巷

代码示例

以下是一个使用C++计算两个点之间曼哈顿距离的代码示例:

#include <iostream>
#include <cmath> // abs()

int main() {
    int x1, y1, x2, y2;
    std::cout << "请输入两个点的坐标 (x1, y1) 和 (x2, y2): ";
    std::cin >> x1 >> y1 >> x2 >> y2;
    int manhattanDistance = std::abs(x1 - x2) + std::abs(y1 - y2);
    std::cout << "两点之间的曼哈顿距离是: " << manhattanDistance << std::endl;
    return 0;
}

详细说明

  1. 输入部分
  • 程序首先提示用户输入两个点的坐标 (x1, y1) 和 (x2, y2)。
  • 使用 std::cin 从标准输入读取这四个整数。
  1. 计算部分
  • 使用 std::abs() 函数计算两个点之间横坐标和纵坐标的差的绝对值。
  • 将这两个绝对值相加,得到曼哈顿距离。
  1. 输出部分
  • 使用 std::cout 输出计算得到的曼哈顿距离。

注意事项

  • 在实际编程中,确保输入的数据在有效范围内,以避免潜在的越界或错误计算。
  • 曼哈顿距离的计算相对简单,但它在路径规划、图像处理等领域有着广泛的应用。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号