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; }