AcWing 1219. 移动距离
原题链接
简单
作者:
Will_15
,
2023-02-06 12:00:41
,
所有人可见
,
阅读 130
//每个数都减1,/得到行号,%得到列号,行号是奇数就翻转,输出
//距离只有曼哈顿距离和欧几里得距离,全用坐标来求就简单了
//二维的数模拟数组时的写法
//main:输入数据,数据减1,得到行,得到列,是奇数就翻转,输出曼哈顿距离
//从零开始有四个好处:1.下标除以列的个数向下取整就是行号 2.总列数-1-某个列号就是对称的那个数的列号
// 3.列号=下标%总列数 4.如果从零开始编号的话,编号=行号*总列数+列号
#include<iostream>
using namespace std;
const int N=10010;
int main()
{
int w,n,m;
cin>>w>>m>>n;
m--,n--;
int x1=m/w,x2=n/w;
int y1=m%w,y2=n%w;
if(x1%2!=0)y1=w-1-y1;
if(x2%2!=0)y2=w-1-y2;
int res=abs(x1-x2)+abs(y1-y2);
cout<<res<<endl;
return 0;
}