Forsaken喜欢正方形 判断正方形

链接:https://ac.nowcoder.com/acm/contest/1221/D
来源:牛客网
 

Forsaken喜欢正方形

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

        Forsaken特别喜欢正方形,现在他有二维平面的四个整点。如果四个整点可以直接形成一个正方形,输出"wen"。如果可以通过对其中一个点进行一次轻微的调整使得四个整点形成一个正方形,输出“hai xing”,轻微的调整是指如果当前整点坐标为(x,y)(x,y)(x,y),那么我们可以把这个点变成(x+1,y),(x−1,y),(x,y+1),(x,y−1)(x+1,y),(x-1,y),(x,y+1),(x,y-1)(x+1,y),(x−1,y),(x,y+1),(x,y−1)中的一种。否则如果都不行,输出“wo jue de bu xing”。

输入描述:

输入有四行,每行一个二维坐标(x,y)(x,y)(x,y)

输出描述:

按题面给定输出。

示例1

输入

复制

0 0
0 1
1 1
1 0

输出

复制

wen

备注:

0≤x,y≤1000 \leq x,y \leq 1000≤x,y≤100

》》》四条边相同 对角线相同 即可判断为正方形

#include<bits/stdc++.h>
using namespace std;
int a[5][3];

int pd() 
{
	int hh[10];
	int cnt=1;
	for(int i=1;i<4;i++)
	{
		for(int j=i+1;j<=4;j++)
		{
			hh[cnt++]=(abs(a[i][1]-a[j][1])*abs(a[i][1]-a[j][1]))+(abs(a[i][2]-a[j][2])*abs(a[i][2]-a[j][2]));
			
		}
		
	}
	
	sort(hh+1,hh+7);
	int q1=0,q2=0;
	for(int i=1;i<=3;i++)
	{
		if(hh[i]!=hh[i+1]) 
		{
			q1=1;
			break;
		}
	}
	
	if(hh[5]!=hh[6]) q2=1;
	
	if(q1==0&&q2==0) return 1;
	else return 0;	
	
}

int chang()
{
		int b[10][2]={
	1,0,
	-1,0,
	0,1,
	0,-1,
	};
	
	for(int i=1;i<=4;i++)
	{
		for(int j=0;j<4;j++)
		{
			int dx=b[j][0];
			int dy=b[j][1];
			
			a[i][1]+=dx;
			a[i][2]+=dy;
						
			if(pd()) return 1;
			
			a[i][1]-=dx;
			a[i][2]-=dy;
		}
	}
	
	return 0;
}

int main()
{
	
	
	for(int i=1;i<=4;i++) 
	{
		scanf("%d%d",&a[i][1],&a[i][2]);
	}
	if(pd()) printf("wen");
	else if(chang()) printf("hai xing");
	else printf("wo jue de bu xing");
	
	
	
	
}
发布了44 篇原创文章 · 获赞 6 · 访问量 1179

猜你喜欢

转载自blog.csdn.net/qq_43868883/article/details/103844814
今日推荐