作者制作不易,关注、点赞、收藏一下吧!
1.曼巴顿距离
曼哈顿距离是由十九世纪的赫尔曼·闵可夫斯基所创词汇,用于标明两个点在标准坐标系上的绝对轴距总和。
2.代码实现
2.1.导入头文件、命名空间
这个没有什么好说的,不过绝对值需要用cmath头文件。
#include <iostream> // 导入头文件、命名空间
#include <cmath>
using namespace std;
2.2.创建结构体和输入
struct point // 定义结构体point
{int x;int y;
}point_list[1001]; // 创建结构体列表point_listint point_number; // 输入点的个数
cin >> point_number;
for(int i = 0; i <= point_number - 1; i++) // 输入每个点的x、y轴
{cin >> point_list[i].x >> point_list[i].y;
}
有关结构体的内容可以看结构体这篇文章。
2.3.枚举
// 开始枚举
for(int i = 0; i <= point_number - 1; i++)
{for(int j = i + 1; j <= point_number - 1; j++){int point_distance = abs(point_list[i].x - point_list[j].x) + abs(point_list[i].y - point_list[j].y); if (point_distance < min_distance) {min_distance = point_distance;}}
}
2.4.输出结果
cout << min_distance;
2.5.完整代码
#include <iostream> // 导入头文件、命名空间
#include <cmath>
using namespace std;struct point // 定义结构体point
{int x;int y;
}point_list[1001]; // 创建结构体列表point_listint main() // 主函数
{int point_number; // 输入点的个数cin >> point_number;for(int i = 0; i <= point_number - 1; i++) // 输入每个点的x、y轴{cin >> point_list[i].x >> point_list[i].y;}int min_distance = 1e9; // 初始化最小值// 开始枚举for(int i = 0; i <= point_number - 1; i++){for(int j = i + 1; j <= point_number - 1; j++){int point_distance = abs(point_list[i].x - point_list[j].x) + abs(point_list[i].y - point_list[j].y);if (point_distance < min_distance){min_distance = point_distance;}}}cout << min_distance;return 0; // 结束程序
}