HDU 2108 Shape of HDU(叉积)

数学题,始终不懂为毛要用首尾顺次相接的向量来进行叉乘

稀里糊涂过了。。扔垃圾桶吧。。。

#include <stdio.h>

int n;
struct Tpoint {
	int x;
	int y;
	} a[100000];
	
struct Tvector {
	int x;
	int y;
	} b[100000];

int flag;

int main()
{
	while (scanf("%d",&n),n) {

		for(int i=0;i<n;i++) {
			scanf ("%d%d",&a[i].x,&a[i].y);
		}
		
		for (int i=0;i<n-1; i++) {
				b[i].x=a[i+1].x-a[i].x;
				b[i].y=a[i+1].y-a[i].y;
		}
		
		b[n-1].x=a[0].x-a[n-1].x;
		b[n-1].y=a[0].y-a[n-1].y;
		
		flag=1;
		
		for (int i=0; i<n-1; i++) {
			if((b[i].x)*b[i+1].y - b[i+1].x*(b[i].y) < 0) {
				flag=0;
				//printf("%d%d",a[i].x,a[i].y);
				break;
			}
		}
		if((b[n-1].x)*b[0].y - b[0].x*(b[n-1].y) < 0) flag=0;
		if(flag) printf("convex\n");
		else printf("concave\n");
	}
}

posted on 2011-07-20 08:10  Eucalyptus  阅读(218)  评论(0编辑  收藏  举报