AC代码:
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<math.h>
using namespace std;
struct stu
{
double x, y;
};
bool cmp(const stu &a, const stu &b)
{
if (atan2(a.y,a.x)<atan2(b.y,b.x))return true;
else return false;
}
int main()
{
int n;
while (cin >> n&&n >= 0)
{
if (n == 0)continue;
stu s[105];
for (int i = 0; i < n; i++)
{
cin >> s[i].x >> s[i].y;
}
sort(s, s + n, cmp);
for (int i = 0; i < n; i++)
{
if (i > 0)cout << " ";
printf("%.1lf %.1lf" , s[i].x, s[i].y );
}
cout << endl;
}
return 0;
}
本文介绍了一个使用极坐标排序算法解决特定问题的C++代码实现。该算法通过计算每个点相对于原点的角度,然后按角度从小到大的顺序进行排序。代码中使用了结构体存储点的坐标,以及自定义的比较函数cmp来实现排序。此算法适用于需要按极角顺序排列二维平面上点的场景。
242

被折叠的 条评论
为什么被折叠?



