您的位置:首页 > 其它

HDU 2108 Shape of HDU(判断拐点)

2013-08-20 23:00 381 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2108

这题是用矢量相乘来判断拐向的,三个点a,b,c,矢量叉乘(b-a)×(c-b)为正就左拐,否则右拐,出现右拐就是凹的

#include<stdio.h>
#include<math.h>
int x[1000000],y[1000000],n;
int con(int a,int b,int c)
{
int s,x1,x2,y1,y2;
x1=x[b]-x[a];
y1=y[b]-y[a];
x2=x[c]-x[b];
y2=y[c]-y[b];
s=x1*y2-y1*x2;
return s>0;
}
int main()
{
int i,flag;
while(scanf("%d",&n),n)
{
flag=0;
for(i=0;i<n;i++)
{
scanf("%d%d",&x[i],&y[i]);
if(i>1)
if(con(i-2,i-1,i)==0)flag=1;
}
if(con(i-2,i-1,0)==0||con(i-1,0,1)==0)flag=1;
if(flag)printf("concave\n");
else printf("convex\n");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: