题目名字
题意
只能走两个点之间的折线距离(只能横着或竖着走. d = abs(x1 - x2) + abs(y1 - y2)
思路
- 两个点之间的折线距离(只能横着或竖着走. d = abs(x1 - x2) + abs(y1 - y2)
代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int w, m, n, y1, y2;
int main()
{
cin >> w >> m >> n;
m --, n --; //每个数都减1便于求出行号列号
int x1 = m / w, x2 = n / w; //计算两个数各自的行号(从0开始)
int y1 = m % w, y2 = n % w; //计算两个数各自的列号(同上)
if(x1 % 2) y1 = w - 1 - y1; //若为奇数行,则要翻转一下
if(x2 % 2) y2 = w - 1 - y2;
int distance = abs(x1 - x2) + abs(y1 - y2); //计算曼哈顿距离
cout << distance << endl;
return 0;
}