CheeseIce

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\n");
        else
            printf("convex\n");
    }
}

 

分类:

技术点:

相关文章:

  • 2021-12-06
  • 2021-08-11
  • 2021-06-02
  • 2022-12-23
  • 2022-01-02
  • 2022-01-19
猜你喜欢
  • 2022-12-23
  • 2021-07-26
  • 2021-06-09
  • 2021-11-21
  • 2022-12-23
  • 2021-08-02
  • 2021-07-21
相关资源
相似解决方案