题目链接: http://poj.org/problem?id=1228
题意:给定一些点,问这些点能不能够成稳定的凸包,这有点不明不白的,我也是看了别人的报告才搞明白题意的,就是如果凸包上的一条边如果不包 含三个以上的点,它就是可以被向外扩展的.
解题:
弄明白了题意,以为会很简单了,直接扫描求凸包就行了,而且是不用退栈的过程,后来在实现过程中才发现,即使给出的所有点都在凸包上,也是不能够一次循环下来就入栈所有的点,因为,所有的点只是按相对原点(这里指左下角的点)的转角进行排序,并且又是距离进的排在前面,而在以后或者最后一条边下来的时候,如果它直通原点,则一定会首先入栈那些距原点近的点,这样所有点的入栈顺序就跟所需求的顺序混乱了~所以在入栈每点的时候,首先进行再次的扫描,然后对相对于原点相同转角的所有点进行二次排序,其实这个排序也可以放在求凸包之前的,而把第一次排序中的距离换成远距离放在前面就行了~
呃,因为输入WA了好几次,对于输入n,直接判断它小于6,而没有接收后面的n个点,尴尬~