输出凸包上的所有点
来源:互联网 发布:招java学徒是骗局吗 编辑:程序博客网 时间:2024/04/26 05:41
//从原点开始,按逆时针顺序输出凸包上的每个点#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;struct Point{int x,y;}s[1005];bool cmp(Point a,Point b){ if(a.y==b.y) return a.x<b.x; else return a.y<b.y;}int cross(Point p1,Point p2,Point p3){ int tmp=(p2.x-p1.x)*(p3.y-p2.y)-(p3.x-p2.x)*(p2.y-p1.y); if(tmp>=0) return 1; else return -1;}int n,l,st[1005],ans[1005],tail,cnt;void Jarvis(){ sort(s,s+n,cmp); tail=-1,cnt=0; st[++tail]=0,st[++tail]=1; for(int i=2;i<n;i++) { while(tail>0&&cross(s[st[tail-1]],s[st[tail]],s[i])<0) tail--; st[++tail]=i; } for(int i=0;i<=tail;i++) ans[cnt++]=st[i]; tail=-1; st[++tail]=n-1,st[++tail]=n-2; for(int i=n-3;i>=0;i--) { while(tail>0&&cross(s[st[tail-1]],s[st[tail]],s[i])<0) tail--; st[++tail]=i; } for(int i=1;i<tail;i++) //1~tail-1避免重复 ans[cnt++]=st[i];}double dist(Point a,Point b){ double tmp=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); return sqrt(tmp);}int main(){ cin>>n; for(int i=0;i<n;i++) scanf("%d%d",&s[i].x,&s[i].y); Jarvis(); cout<<endl; int k; for(k=0;k<cnt;k++) if(!s[ans[k]].x&&!s[ans[k]].y) break; for(int i=k;i<cnt;i++) cout<<s[ans[i]].x<<' '<<s[ans[i]].y<<endl; for(int i=0;i<k;i++) cout<<s[ans[i]].x<<' '<<s[ans[i]].y<<endl; return 0;}/*0 070 -5060 30-30 -5080 2050 -6090 -20-30 -40-10 -6090 10*/
0 0
- 输出凸包上的所有点
- C题Dogs'House 求凸包上的点
- 算法:分治法求凸包上的点以及由凸包所构成的多边形的面积
- poj2187 凸包上的最远点对的距离(凸包+旋转卡壳)
- 把有界凸空间中所有点输出的算法讨论
- poj 2187 凸包上的直径 - 旋转卡壳
- 求凸包上最远两点距离的平方值
- UVA 10078 The Art Gallery【输入点是否全部在凸包上】
- 24点(随机输出四个数,输出所有结果为24的等式)
- 24点游戏的c++代码,能够输出所有可能的解
- 【Codeforces Round 335 (Div 2)E】【计算几何-凸包 线性规划 三分凸包上最优点】Freelancer's Dreams 二维属性 充最少的钱变得满足要求 [计算几何-凸包模
- 第十二周-输出从顶点u到顶点v的所有简单路径
- 求凸包上最大距离 poj2187
- 输出整数的所有分解
- 输出1234的所有组合
- 输出串的所有排列
- 输出字符串的所有排列
- 输出10000所有的素数
- 【域控管理】域控的必要性
- 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?
- “电脑管控”的罪恶
- 剑指天下我争锋-飞凌嵌入式i.MX6Q优势解析
- Linux学习笔记1——不带缓冲的文件I/O函数
- 输出凸包上的所有点
- 凸包之三道模板应用题
- AngularJS Cookies Example
- C 文件操作
- Faster RCNN generate_anchors.py
- 使用shareSDK实现qq,微博,微信分享
- android文字描边效果
- 同步 异步 阻塞 非阻塞
- Struts学习笔记(1)