首页 > 学院 > 开发设计 > 正文

移动距离

2019-11-06 07:21:59
字体:
来源:转载
供稿:网友
/*移动距离X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...当排满一行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:1  2  3  4  5  612 11 10 9  8  713 14 15 .....我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开,都在1到10000范围内w为排号宽度,m,n为待计算的楼号。要求输出一个整数,表示m n 两楼间最短移动距离。例如:用户输入:6 8 2则,程序应该输出:4再例如:用户输入:4 7 20则,程序应该输出:

5 */

原本我以为是先排列,然后用搜索,可是后来发现,直接求起点和终点的绝对差之和就可以啦

#include <iostream>#include <cmath>using namespace std; int main(){int w,m,n;cin>>w>>m>>n;m--;n--;int m1=m/w,m2 = m%w;if(m1 & 1)m2 = w-1-m2;int n1 = n/w,n2 = n%w;if(n1&1)n2 = w-1-n2;cout<<abs(m1-n1) + abs(m2-n2)<<endl;return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表