曼哈顿距离,注意边界
WA了一次,列标边界没考虑
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 1e4 + 10;
int w, m, n;
int main()
{
cin >> w >> m >> n;
int fr = 0, sr = 0;
if(m % w) fr = m / w + 1;
else fr = m / w;
if(n % w) sr = n / w + 1;
else sr = n / w;
int res = abs(fr - sr);
int fc = 0, sc = 0;
if(fr % 2) //奇数行号,所在列号为m % w
{
if(m % w) fc = m % w;
else fc = w;
}
else //偶数行号,列号为w - m % w + 1
{
if(m % w) fc = w - m % w + 1;
else fc = 1;
}
if(sr % 2)
{
if(n % w) sc = n % w;
else sc = w;
}
else
{
if(n % w) sc = w - n % w + 1;
else sc = 1;
}
res += abs(fc - sc);
cout << res << endl;
return 0;
}