#include"bits/stdc++.h"
using namespace std;
/*
无法斜方向移动,即只可以上下左右移动。那么此时我们只需要求出数值m与n的坐标,
然后求出对应坐标相减绝对值即可
*/
int x=0,y=1,kx,ky,sum;
int main()
{
int w,m,n;
cin >> w >> m >> n;
if(m<n)
swap(m,n);//确保m的值为最大值,以便完整遍历。进而找出两数值的坐标
for(int i=1;i<=m;i++)//遍历完之时,也就找到了m的坐标
{
if(y%2==1)//正方向
{
x++;//上面可以发现x赋的初值为0的原因即在这里,即使一开始没多久就结束了循环,也可以得到m的坐标为(x,y)。若赋初值为1则横坐标将多1
if(x>w)//大于宽度时,要跳至下一行
x=w,y++;
}
else
{
x--;
if(x<1)
x=1,y++;
}
if(i==n)//找到n的坐标
kx=x,ky=y;
}
sum=abs(kx-x)+abs(ky-y);
cout << sum;
return 0;
}
P8623 [蓝桥杯 2015 省 B] 移动距离
最新推荐文章于 2024-06-15 23:36:03 发布