本文主要是介绍POJ 2007(极角排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:点击打开链接
题目大意:给你一大堆点,让你从0,0开始逆时针输出点的坐标
题目思路:明明就22行代码的东西..为什么网上的都搞得这么复杂..极端无语....水题被讲这么复杂也是没话讲..a和b的叉积如果大于0,那么就是b在a的逆时针位置,就是a通过逆时针到达b的角度比顺时针小,题目要求点按照逆时针,也就是前一条边在后一条边的顺时针位置,按照叉乘大于0排序就可以了...注意排序的时候第一个点不要排,第一个点必是0 0,排序换了位置以后会wa的..
以下是代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{int x,y;
}a[10005];
int cmp(node a,node b){return a.x*b.y-a.y*b.x>0;
}
int main(){int n=0;while(~scanf("%d%d",&a[n].x,&a[n].y)){n++;}sort(a+1,a+n,cmp);for(int i=0;i<n;i++){printf("(%d,%d)\n",a[i].x,a[i].y);}return 0;
}
这篇关于POJ 2007(极角排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!