评论中有个人提醒了我们:
@[xinghuanliukong] 大佬,您第一个题的代码是不是没有在相同 y 最小值的情况下,把最小的 x 作为初始节点,例如 3,0 2,0 0,0 1,0 1,1 最终跑代码在凸包中为, 3,0 1,1 0,0 2,0 3,0 存在了多余的节点,2,0 虽然最后的计算答案不存在问题 所以我们应该在原先基础上判断:
@[xinghuanliukong] 大佬,您第一个题的代码是不是没有在相同 y 最小值的情况下,把最小的 x 作为初始节点,例如 3,0 2,0 0,0 1,0 1,1 最终跑代码在凸包中为, 3,0 1,1 0,0 2,0 3,0 存在了多余的节点,2,0 虽然最后的计算答案不存在问题
所以我们应该在原先基础上判断:
else if(i!=1&&p[1].y==p[i].y&&p[1].x>p[i].x) swap(p[1],p[i]);
即可通过此题