这是蓝桥杯2022年Python的G题,其实这道题我在很久之前看到时被劝退,感觉自己写不出来,今天重新来挑战他,发现这道题没有运用任何变成知识,仅仅运用了直角坐标系(笛卡尔坐标系)。
看到这一题的第一眼肯定不会将他和坐标系联系在一起,第一想到的时DFS和BFS这种搜索算法,但是很可惜,这道题没有这么深。
解题思路
思路
根据图中显示,我们可以发现,从原点O(0, 0)出发,左上、左下、右上、右下,这4个方向每移动一次x +- 0.5, y +- 1
而向左或者向右只有 x +- 1
根据这个想法可以得出[[-1, 0], [-0.5, 1], [0.5, 1], [1, 0], [0.5, -1], [-0.5, -1]],下标从0开始,每个下标都对应着蜂巢的6个方向。
按照题目给的要求得到点B和点C
计算两点之间的距离,两点之间的路径就是abs(x1 - x2) + abs(y1 - y2)由于蜂巢向上向下移动一次是 ± 0.5,所以得到最终的表达式为abs(x1 - x2) + abs(y1 - y2) * 0.5。
若一个点向上向下移动能直接抵达另一个点,那么直接输出abs(y1 ...