本文共 880 字,大约阅读时间需要 2 分钟。
在创建客户徽标时,ACM使用图形实用程序绘制一张图片,稍后可以将其剪切为特殊的荧光材料。为确保正确处理,图片中的形状不能相交。但是,有些徽标包含这样的相交形状。有必要检测它们并决定如何改变图片。
给定一组几何图形,要确定它们的所有交点。如果一个形状完全位于另一个形状内,则不将其计算为交点。
输入包含多个图片。每张图片最多描述26个形状,每一个都在单独的行上说明。该行以一个大写字母开头,该字母唯一标识对应图片中的形状。然后是一种形状类型和两个或多个点,所有内容用空格分隔。
可能的形状类型有:
所有点都以“(X,Y)”的格式给出,X和Y是整数字符,绝对值不超过10000。图片描述以包含“-”的行结尾。在最后一张图片后,有一行包含一个点(“.”)。
输出中,每个形状按字母顺序排列。输出行也是按字母顺序排列,每一行要么说明该形状没有交点,要么列出它与其他形状的交点。
以下是代码的主要逻辑:
代码使用了以下数据结构和函数:
struct Point
:表示二维点。struct Line
:表示直线段,包含两个端点。bool SegmentProperIntersection(Line l1, Line l2)
:判断两条线段是否相交且在合理范围内。cmp
函数:用于对形状进行排序。judge
函数:判断两个多边形是否相交。读取输入并解析完成后,程序对每个形状进行交点检查,然后按照要求输出结果。
转载地址:http://rgymz.baihongyu.com/