正方形检测
链接:https://ac.nowcoder.com/acm/problem/21842
来源:牛客网
题目描述
给你平面直角坐标系中的四个点,判断这四个点是否构成一个正方形
输入描述:
第一行输入四个整数x_ix i (0 \le x_i \le 100000≤x i ≤10000)
第二行输入四个整数y_iy i (0 \le y_i \le 100000≤y i≤10000)
输出描述:
如果可以构成正方形,输出"It’s a square"
否则输出"Not a square"
示例1
输入
0 0 2 2
0 2 0 2
输出
It's a square
示例2
输入
0 1 5 6
1 6 0 5
输出
It's a square
示例3
输入
0 0 7 7
0 3 0 3
输出
Not a square
思路 : 暴力枚举每一条边,然后排序比较
AC代码
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int a[4],b[4];
int ans[10];
int main(){
for(int i = 0;i < 4;i ++) cin >> a[i];
for(int i = 0;i < 4;i ++) cin >> b[i];
int idx = 0;
for(int i = 0;i < 4;i ++){
for(int j =i + 1;j < 4;j ++){
ans[idx ++] = (a[i] - a[j]) * (a[i] - a[j]) + (b[i] - b[j]) * (b[i] - b[j]);
}
}
sort(ans,ans + 6);
if(ans[0] == ans[1] && ans[1] == ans[2] && ans[2] == ans[3] && ans[4] == ans[5]){
cout << "It's a square" << endl;
}else
cout << "Not a square" << endl;
return 0;
}