2108 ACM 向量积 凹凸

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

图一中,向量a × 向量 b    根据右手定则,得出向量c的方向。即为凸多边形。

图二中,若向量a × 向量 b  根据右手定则,则得出的向量d的方向,即为凹多边形。

又根据图一中,向量a × 向量 b为正,所以根据坐标得    (x[i+1]-x[i])*(y[i+2]-y[i])-(x[i+2]-x[i])*(y[i+1]-y[i]) > 0

代码:

#include<cstdio>
int main ()
{
    int n;
    int x[1001],y[1001];
    while(scanf("%d",&n)!=EOF&&n)
    {
        for(int j=0;j<n;j++)
        scanf("%d %d",&x[j],&y[j]);
        x[n]=x[0];
        x[n+1]=x[1];
        y[n]=y[0];
        y[n+1]=y[1];
        int sum,i;
        for( i=0;i<n;i++)
        {
            sum=(x[i+1]-x[i])*(y[i+2]-y[i])-(x[i+2]-x[i])*(y[i+1]-y[i]);
            if(sum<0)
                break;
        }
        if(i!=n || sum<0)
            printf("concave
");
        else
            printf("convex
");
    }
}
原文地址:https://www.cnblogs.com/CheeseIce/p/9615363.html