解题思路: 在一篇博客找到的原理图。可以根据此图设计六个方向,x,y轴方向如图所示。
注意事项: 可以注意到点变化的方向只有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分
13 人评分
C语言程序设计教程(第三版)课后习题12.6 (C语言代码)浏览:789 |
C语言训练-排序问题<1> (C++代码)浏览:589 |
成绩转换 (C语言代码)浏览:1004 |
淘淘的名单 (C语言代码)答案错误???浏览:591 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:535 |
字符逆序 (C语言代码)浏览:608 |
大家好,我是验题君浏览:572 |
1050题解(结构体数组与结构体指针的使用)浏览:1105 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:534 |
链表数据求和操作 (C语言代码)浏览:938 |