前话:这题也太坑了吧,点在圆的边缘上也算穿过?
这题其实并不难,算法标签写的是图论,个人觉得是模拟
结构体保存圆中心的坐标与半径.
遍历每个圆,得出圆中心到曲线起点的距离与圆中心到曲线终点的距离.(注意使用欧几里得距离算法)
判断三种情况,一种是曲线从外往里经过(终点在圈内),一种是从里往外经过(起点在圈内),还有一种就是绕过这个圈(起点终点都不在圈内,或者都在圈内,都在圈外虽然也可以穿过,但是我们要求的是这条曲线最少要穿过的圆的个数).
现在,之前得出的起点(终点)到圆中心的距离就派上用场了,如果距离超过(或等于)圆的半径,就在圈外,否则在圈内.
最后,如果这个圆属于之前三种情况的前两种,这条曲线就要多穿过一个圆.
结束,剩下程序自己做吧.
小提示:
欧几里得算法求距离
sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))