hdu 2108 Shape of HDU(判断多边形是凸凹边形)

来源:互联网 发布:用php写一个登录页面 编辑:程序博客网 时间:2024/06/07 15:24

链接

公式:s=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)   

 当s>0时,p1,p2,p3三个点呈逆时针   

 当s<0时,p1,p2,p3三个点呈顺时针

#include<stdio.h>#include<string.h>typedef struct In{    int x,y;};In num[10010];int main(){    int n,i,ans,flag;    while(scanf("%d",&n),n){        memset(num,0,sizeof(num));        for(i=0;i<n;i++){            scanf("%d%d",&num[i].x,&num[i].y);        }        num[n].x=num[0].x;        num[n].y=num[0].y;        num[n+1].x=num[1].x;        num[n+1].y=num[1].y;//判断最后两条边,一定不要忘了最后两条边!!!        for(ans=i=0;i<n;i++){            ans=(num[i].x-num[i+2].x)*(num[i+1].y-num[i+2].y)-(num[i+1].x-num[i+2].x)*(num[i].y-num[i+2].y);            if(ans<0) break;        }        if(ans<0) printf("concave\n");        else printf("convex\n");    }    return 0;}


 

0 0
原创粉丝点击