1.洛谷原创:求凸多边形的对角线交点个数
公式法:n (n-1) / 2 (n-2) / 3 * (n-3) / 4
一般法:
首先,将该凸多边形的顶点依次标上序号,如六边形六个顶点依次为:1,2,3,4,5,6
然后,选出能构成对角线的两个点的组合,构成一个二位列表,经过推断可知,构成对角线的条件为:
1,两个数字的差不能为1,也就是两个点不能相邻。
2,因为1号点与n号点也相邻,但是之间的差值却不是1,所以应该将这种情况排除。
例:六边形经过第一次的筛选可以得到二维列表
[[1, 3], [1, 4], [1, 5], [2, 4], [2, 5], [2, 6], [3, 5], [3, 6], [4, 6]]([1,3]代表点1和点3的连线)
最后一步,我们应该寻找能构成焦点的两条线的关系,经过推导可知:
对于两条对角线[a,b],[c,d]。(a<b,c<d)
如果a<c<b<d或c<a<d<b
(这里解释一下为什么要这样,因为只有当其中一条对角线的一个端点(只能是一个)在另一条对角线的两个端点之间时,两对角线才能相交)
即可构成一个交点
该思路转自CSDN博主「见白头」的原创文章
原文链接:https://blog.csdn.net/jianbaitou/article/details/110309451