每个点横纵坐标找规律算一下就好了,虽然我也不知道我咋算的,感觉做复杂了。
#include<iostream>
using namespace std;
int w,m,n;
int main(){
cin >> w >> m >> n;
int xm=(m-1)/w,ym,xn=(n-1)/w,yn;
if(xm%2==0) ym=(m-1)%w;
else ym=w-1-(m-1)%w;
if(xn%2==0) yn=(n-1)%w;
else yn=w-1-(n-1)%w;
cout << abs(xn-xm)+abs(yn-ym);
return 0;
}
更新:突然发现m,n都是-1再用的,那么读取的时候-1就可以直接用了,会简洁一点。