链接: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"); }
Forsaken喜欢正方形 判断正方形
猜你喜欢
转载自blog.csdn.net/qq_43868883/article/details/103844814
今日推荐
周排行