NC20053. [HNOI2006]马步距离
描述
输入描述
只包含4个整数,它们彼此用空格隔开,分别为xp,yp,xs,ys。并且它们的都小于10000000。
输出描述
含一个整数,表示从点p到点s至少需要经过的马步移动次数。
示例1
输入:
1 2 7 9
输出:
5
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2023-01-27 08:49:09
#include<algorithm> #include<iostream> using namespace std; int ans; int sx, sy, tx, ty; int biao[5][5] = { {0,3,2,3,2}, {3,2,1,2,3}, {2,1,4,3,2}, {3,2,3,2,3}, {2,3,2,3,4} }; int main() { scanf("%d%d%d%d", &sx, &sy, &tx, &ty); int x = abs(sx - tx); int y = abs(sy - ty); while (x > 4 || y > 4) { if (x < 0)x = -x; if (y < 0)y = -y; if (x < y)swap(x, y); x -= 2; y -= 1; ans++; } printf("%d\n", ans + biao[x][y]); return 0; }