hdu 2108叉积

http://acm.hdu.edu.cn/showproblem.php?pid=2108

代码如下:

#include"stdio.h"

int flag1,flag2,x[1005],y[1005];

void judge(int x1,int y1,int x2,int y2)
{
    if(x1*y2-x2*y1>0)
        flag1=1;
    else if(x1*y2-x2*y1<0)
        flag2=1;
}

int main( )
{
    int n,a,b,i;
    while(scanf("%d",&n)&&n!=0)
    {
        flag1=flag2=0;
        for(i=0;i<n;i++)
            scanf("%d%d",&x[i],&y[i]);
        x[n]=x[0];y[n]=y[0];//注意这里,应该每个节点都算方向的刚开始忽略了
        x[n+1]=x[1];y[n+1]=y[1];
        for(i=2;i<=n+1;i++)
        {
            a=x[i-1]-x[i-2];
            b=y[i-1]-y[i-2];
            judge(a,b,x[i]-x[i-1],y[i]-y[i-1]);
        }
        if(flag1==1&&flag2==1)
            printf("concave\n");
        else
            printf("convex\n");
    }
    return 0;
}
posted @ 2012-07-06 15:14  朝圣の路  阅读(174)  评论(0编辑  收藏  举报