这道题我想的是枚举,求一个点到每个点的距离,用arr数组来存储。如果是正方形,那么只能出现两种长度的线段,所以写一个check函数来判断。废话不多说上代码
using namespace std;
vector<int> x(4),y(4);
vector<int> arr;
bool check(){
unordered_map<int,int> mp;
for(int i=0;i<(int)arr.size();++i){
mp[arr[i]]++;
}
if(mp.size()==2)return true;
else return false;
}
signed main()
{
for(int i=0;i<4;++i)cin>>x[i];
for(int i=0;i<4;++i)cin>>y[i];
for(int i=0;i<4;++i){
for(int j=i+1;j<4;++j){
arr.push_back((y[i]-y[j])*(y[i]-y[j])+(x[i]-x[j])*(x[i]-x[j]));
}
}
if(check())cout<<"It's a square";
else cout<<"Not a square";
return 0;
}

京公网安备 11010502036488号