POJ 2007 Scrambled Polygon 凸包加排序 水题一道
2013-07-24 12:26
274 查看
题意:给出凸包的个个顶点 从(0,0)点开始逆时针输出凸包顶点
分析 :凸包顶点都给你了 计算一遍存下来 然后找到(0,0)点 按照逆时针顺序 对应数组中的点 输出就是了
下面看代码
分析 :凸包顶点都给你了 计算一遍存下来 然后找到(0,0)点 按照逆时针顺序 对应数组中的点 输出就是了
下面看代码
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct Point { int x,y; }s[55],str[55]; typedef struct Point point; int cmp(point a,point b)//排序参数x从小到大排 x相同y从小到大排 { if(a.x<b.x)return 1; if(a.x==b.x&&a.y>b.y)return 1; return 0; } //极角比较, 返回-1: p0p1在p0p2的右侧,返回0:p0,p1,p2共线 int Cross(struct Point p1, struct Point p2, struct Point pb) { int delta=(p1.x-pb.x)*(p2.y-pb.y)-(p2.x-pb.x)*(p1.y-pb.y); if (delta<0) return 1; else if (delta==0) return 0; else return -1; } int ConvexHull(point *p,int n,point *ch)//Andrew法寻找凸包 必须先排序 { int m = 0; for(int i = 0; i < n; i++)//寻找下凸包 { while(m > 1 && Cross(ch[m-1],p[i],ch[m-2]) <= 0 )m--; ch[m++] = p[i]; } int k = m; for(int i = n-2; i >= 0; i--)//寻找上凸包 { while(m > k && Cross(ch[m-1],p[i],ch[m-2]) <= 0 )m--; ch[m++] = p[i]; } if(n > 1)m--; return m; } int main() { #ifdef LOCAL freopen("in.txt","r",stdin); #endif // LOCAL int T; for(T = 0; scanf("%d%d",&s[T].x,&s[T].y)!=EOF; T++); sort(s,s+T,cmp); int m = ConvexHull(s,T,str); int k; for(k = 0; k <= m; k++) if(str[k].x == 0)break; for(int j = k; j > 0; j--) printf("(%d,%d)\n",str[j].x,str[j].y); for(int j = m; j > k; j--) printf("(%d,%d)\n",str[j].x,str[j].y); return 0; }
相关文章推荐
- poj 2007 凸包 极角排序
- 【凸包 Graham法 极角排序】poj 2007 Scrambled Polygon
- POJ 2007 Scrambled Polygon 凸包点排序逆时针输出
- 计算几何:极角排序(poj 2007 Scrambled Polygon)与简单凸包(poj 1113 Wall)
- poj 2007 Scrambled Polygon 凸包点排序逆时针输出
- POJ 2007 Scrambled Polygon [凸包 极角排序]
- POJ 2007 Scrambled Polygon 凸包点排序逆时针输出
- poj 2007 Scrambled Polygon(极角排序)
- poj 2007 Scrambled Polygon(极角排序)
- Poj 1833 排列 —— 一道水题的凌乱
- POJ 1873 The Fortified Forest 二进制枚举 + 凸包 (final水题)
- POJ 1002 UVA 755 487--3279 电话排序 简单但不容易的水题
- poj2007(极角排序)
- POJ 2726 Holiday Hotel 一道水题
- poj 2007 Scrambled Polygon(凸包Graham扫描线模板)
- 简单几何(极角排序) POJ 2007 Scrambled Polygon
- POJ 2007 Scrambled Polygon(凸包)
- Graham 扫描算法求凸包,poj 2187(水题但是是我的第一个求n点集凸包模板)
- 计算几何初步之凸包(POJ 1113、2007、1873、1228、3348)
- POJ 2007 极坐标排序模板题