1183: 平面点排序(一)(结构体专题)
时间: 2023-04-26 11:05:21 浏览: 251
1183题是一道关于平面点排序的问题,主要考察结构体的应用。在这道题中,我们需要对给定的平面点进行排序,按照x坐标从小到大排序,如果x坐标相同,则按照y坐标从小到大排序。
为了实现这个排序,我们可以定义一个结构体,包含平面点的x坐标和y坐标两个成员变量。然后,我们可以使用STL中的sort函数对这些结构体进行排序,排序的规则就是按照x坐标从小到大排序,如果x坐标相同,则按照y坐标从小到大排序。
具体实现过程可以参考以下代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Point {
int x, y;
};
bool cmp(Point a, Point b) {
if (a.x == b.x) {
return a.y < b.y;
}
return a.x < b.x;
}
int main() {
int n;
cin >> n;
Point p[n];
for (int i = ; i < n; i++) {
cin >> p[i].x >> p[i].y;
}
sort(p, p + n, cmp);
for (int i = ; i < n; i++) {
cout << p[i].x << " " << p[i].y << endl;
}
return ;
}
```
在这个代码中,我们首先定义了一个结构体Point,包含x和y两个成员变量。然后,我们定义了一个cmp函数,用于比较两个Point结构体的大小。在cmp函数中,我们首先比较两个结构体的x坐标,如果相同,则比较y坐标。最后,我们使用STL中的sort函数对Point数组进行排序,排序的规则就是按照cmp函数中定义的规则进行排序。最后,我们输出排序后的结果。
总之,这道题主要考察结构体的应用,以及对STL中sort函数的使用。掌握了这些知识点,就可以轻松解决这道题目。
阅读全文