将位置看作从0开始。则每一行的坐标是(m-1)%w的结果,即第一行坐标依次为0.1.2.3.4....(w-1) 且(m-1)/w是行数,行数从0开始,为偶数顺序排列,奇数逆序排列。
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int w,m,n;
cin>>w>>m>>n;
int m1=m-1,n1=n-1;
int a1=m1/w,a2=n1/w;
int b1,b2;
if(a1%2==0){//顺序排列
b1=m1-w*a1;
}else{
b1=w-1-(m1-w*a1);
}
if(a2%2==0){//顺序排列
b2=n1-w*a2;
}else{
b2=w-1-(n1-w*a2);
}
int num=abs(a1-a2)+abs(b1-b2);
cout<<num;
return 0;
}