#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int x,y,x1,x2,y1,y2,r;
cin >> x1 >> y1 >> x2 >> y2;
x = abs(x1- x2);
y = abs(y1- y2);
if(x>y)
r = x;
else r = y;
cout << r << endl;
return 0;
}
Description
小T自幼学习中国象棋,小学时曾荣获龙城小学象棋比赛冠军,他对中国象棋情有独钟,外出参加信息学夏令营等活动时都要随身携带一副中国象棋,一有空就会摆开棋跟小伙伴们杀上几盘。自从在小学编程班上听了国际象棋的起源传说后,小T又对神秘的国际象棋产生了浓厚兴趣,由于学习任务繁重并且课余时间还要用来编写程序,小T一直没有机会学习国际象棋,前不久小T通过自主招生提前考上了心仪已久的CZ中学创新实验班,一举摆脱了中考的烦恼,自主招生面试一结束小T立马到龙城棋院买了一副国际象棋,一进家门就迫不及待地摆开了,小T首先学习的是国王的走法,国际象棋棋盘由8行8列的64个方格组成,如下图中的左图所示,棋子是放在方格中的,这一点跟中国象棋有着很大的区别,国王可移动至八个邻近方格中的任意一个,如下图中的右图所示,只要不掉到棋盘外面即可,图中的黑色实心圆代表国王,八个白色的空心圆代表国王一步能走到的位置。小T想知道国王从棋盘上的一个格子到达另一个格子至少需要走几步?
Input
输入数据共有两行,每行包含两个用空格隔开的不超过8的正整数,
第一行的两个数R1,C1表示国王初始时的位置在第R1行第C1列,
第二行的两个数R2,C2表示国王要走到的目标位置在第R2行第C2列。
Output
输出数据仅有一行包含一个整数表示国王从棋盘上的初始位置走到目标位置至少需 要走几步?
Sample Input 1
1 2 8 8
Sample Output 1
7
Hint
【样例解释】
样例中国王(上图中用“王”表示)初始时在棋盘上的第 1 行第 2 列,要走到棋盘右下角的方格即第 8 行第 8 列,小 T 只要第一步将国王向下移一格走到第 2 行第 2 列,然后一 直沿斜线向右下方向连续走 6 步即可到达目标位置,图中将国王走过的位置用 1~7 依次 标出来了,总共需要走 7 步,可以验证其它走法都不可能少于 7 步。
【数据范围】
20%的数据满足:国王的初始位置和目标位置在同一行或同一列
30%的数据满足:R1<R2,C1<C2
100%的数据满足:1≤R1,R2,C1,C2≤8
【来源】
常州市2014“信息与未来”选拔赛
Source
市赛