【c++|对称轴(Symmetry)】给出平面上N(N≤1000)个点,问是否可以找到一条竖线,使得所有点左右对称。
/*对称轴一定是最左边和最右边点的中点所在竖线。
可以找最左边和最右边的点,即横坐标最小和最大。
主要是把点的横坐标排序,
然后判断左边的第n个点和右边的第n个点是否关于对称轴对称。
*/
#include
#include
#include
#include
#include
using namespace std;
int n,m;
struct point1
{
double x;
double y;
};
point1 p1[1010];
struct point2
{
double x;
double y;
};
point2 p2[1010];
bool cmp1(point1 l,point1 r)
{
if(l.x==r.x)
return l.yr.y;
else
return l.x>n;
for(int t=0;
t>m;
for(int i=1;
i<=m;
i++)
{
cin>>p1[i].x>>p1[i].y;
p2[i].x=p1[i].x;
p2[i].y=p1[i].y;
}
sort(p1+1,p1+m+1,cmp1);
sort(p2+1,p2+m+1,cmp2);
double mid=(p1[1].x+p1[m].x)/2;
int l=1,r=m;
while(l<=r)
{
if(mid-p1[l].x!=p1[r].x-mid||p1[l].y!=p2[r].y)
{
cout<<"NO"<
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- C#|C# 文件路径操作
- C# 接口实例
- 个人日记|K8s中Pod生命周期和重启策略