解题思路: 在一篇博客找到的原理图。可以根据此图设计六个方向,x,y轴方向如图所示。

PP[IO]Y]Z05B$YW%SUFPF_X.png
注意事项: 可以注意到点变化的方向只有x轴,y轴,(1,1)和(-1,-1),而没有其他的方向如(-1,1),(1,-1)

参考代码:

d1, p1, q1, d2, p2, q2 = map(int, input().split())
x = [1, 1, 0, -1, -1, 0]
y = [0, 1, 1, 0, -1, -1]
xa = x[d1] * p1 + x[(d1 + 2) % 6] * q1
ya = y[d1] * p1 + y[(d1 + 2) % 6] * q1
xb = x[d2] * p2 + x[(d2 + 2) % 6] * q2
yb = y[d2] * p2 + y[(d2 + 2) % 6] * q2
if xa == xb or ya == yb or (yb - ya) * (xb - xa) > 0: # 保证两点斜率为正或与坐标轴平行
   ans = max(abs(xa - xb), abs(ya - yb))   # 比如(4,3)只需要走三次(1,1)方向再加一次(1,0)方向。
else:
   ans = abs(xa - xb) + abs(ya - yb) # 其他情况需要分别走x轴方向和y轴方向
print(ans)

点赞(0)
 

0.0分

10 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

Asphel 1年前 回复TA
回顾一下去年的题目233,去年我也是这么做的