本题只需要找出规律即可
映射到二维数组,所以从0开始。
行号:n / w,m / w;
列号:如果是偶数行:n % w,m % w;
如果是奇数行:w - 1 - n % w,w - 1 - m % w;(翻转一下即可)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 10010;
int w,n,m;
int ans;
int a[N][N];
int main()
{
cin >> w >> n >> m;
n--;
m--;
int x1,y1,x2,y2;
x1 = n / w;
x2 = m / w;
if(x1 % 2 == 0)
{
y1 = n % w;
}
else
{
y1 = w - 1 - n % w;
}
if(x2 % 2 == 0)
{
y2 = m % w;
}
else
{
y2 = w - 1 - m % w;
}
ans = abs(x1 - x2) +abs(y1 - y2);
cout << ans << endl;
return 0;
}