作者制作不易,关注、点赞、收藏一下吧!
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_list
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;
}
有关结构体的内容可以看结构体这篇文章。
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_list
int 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; // 结束程序
}