题目描述
在国际象棋里,王是最重要的一个棋子。每一步,王可以往上下左右或者对角线方向移动一 步,如下图所示。
输入
输入包含不超过 10000 组数据。每组数据包含 6个整数 r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3, c3<=8). 三个格子 A, B, C保证各不相同。
输出
对于每组数据,输出测试点编号和最少步数。
样例输入
1 1 8 7 5 6
1 1 3 3 2 2
样例输出
Case 1: 7 Case 2: 3
这题不用bfs
//#include "pch.h" #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; int main(){ int r1, c1, r2, c2, r3, c3, ci = 1; while (~scanf("%d%d%d%d%d%d", &r1, &c1, &r2, &c2, &r3, &c3)){ int ans = max(abs(r2 - r1), abs(c2 - c1)), x1 = r3 - r1, x2 = r2 - r1, y1 = c3 - c1, y2 = c2 - c1; if (x1*y2 - x2 * y1 == 0 && abs(x2) == abs(y2) && (x1*x1 + y1 * y1 < x2*x2 + y2 * y2) && (x1*x2 >= 0 && y1*y2 >= 0)) ans += 1; printf("Case %d: %d\n", ci++, ans); } return 0; }