方法一:数学计算
import java.util.Scanner;
public class Main {
static int w;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
w=sc.nextInt();int n=sc.nextInt(),m=sc.nextInt();
f(n,m);
}
public static void f(int n,int m) {
int hn=(n+(w-1))/w,hm=(m+(w-1))/w,ln=n%w,lm=m%w,res;
if(ln==0)ln=w;
if(lm==0)lm=w;
if(hn%2==0)ln=w-ln+1;
if(hm%2==0)lm=w-lm+1;
res=Math.abs(hn-hm)+Math.abs(ln-lm);
System.out.println(res);
}
}
方法二 模拟
import java.util.Scanner;
public class Main {
static int w;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
w=sc.nextInt();int n=sc.nextInt(),m=sc.nextInt();
ff(n,m);
}
static int[] dy= {1,-1};
public static void ff(int n,int m) {
int[][] biao=new int[10001][2];biao[0][1]=1;
int x=1,y=0,d=0,flag=1;
for(int i=1;i<10000;i++) {
y+=dy[d];
biao[i][0]=x;biao[i][1]=y;
if((y%w==0&&biao[i-1][1]%w!=0)||y%w==1&&biao[i-1][1]%w!=1) {y+=dy[d];d=(d+1)%2;x++;}
}
System.out.println(Math.abs(biao[n][0]-biao[m][0])+Math.abs(biao[n][1]-biao[m][1]));
}
}