zoj 2352 || poj 2007 Scrambled Polygon

啊 水题~

 

给你凸多边形的点,然后按极角排序,输出即可。按第一个点为原点~~一个叉积快排即可。。

 

#include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <algorithm> using namespace std; const int MAX = 110; struct point{ double x,y;}; point p[MAX]; point s; double crossProduct(point a,point b,point c)//向量 ac 在 ab 的方向 { return (c.x - a.x)*(b.y - a.y) - (b.x - a.x)*(c.y - a.y); } bool cmp(point a,point b) { return crossProduct(s,a,b) < 0; } int main() { int ncases,n; char str[100]; scanf("%d",&ncases); while( ncases-- ) { scanf("%lf %lf",&s.x,&s.y); getchar(); p[0] = s; int i = 1; while( gets(str) && strlen(str) ) { sscanf(str,"%lf %lf",&p[i].x,&p[i].y); i++; } n = i; sort(p+1,p+n,cmp); for(int i=0; i<n; i++) printf("(%.0lf,%.0lf)/n",p[i].x,p[i].y); if( ncases ) printf("/n"); } return 0; }  

你可能感兴趣的:(c,struct)