Forsaken喜欢正方形

题目描述
Forsaken特别喜欢正方形,现在他有二维平面的四个整点。如果四个整点可以直接形成一个正方形,输出"wen"。如果可以通过对其中一个点进行一次轻微的调整使得四个整点形成一个正方形,输出“hai xing”,轻微的调整是指如果当前整点坐标为(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)中的一种。否则如果都不行,输出“wo jue de bu xing”。

输入描述:
输入有四行,每行一个二维坐标(x,y)(x,y)
输出描述:
按题面给定输出。
示例1

输入
0 0
0 1
1 1
1 0

输出
wen

备注:
0 \leq x,y \leq 1000≤x,y≤100

#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int x[5], y[5];
int xa[] = { -1,1,0,0 };
int yb[] = { 0,0,-1,1 };
bool check()
{
    vector<int> w;
    for (int i = 0; i < 4; i++)
        for (int j = i + 1; j < 4; j++)
        {
            int t = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
            w.push_back(t);
        }
    sort(w.begin(), w.end());
    if (w[0] == w[3] && w[4] == w[5])
        return true;
    return false;
}
int main()
{
    cin >> x[0] >> y[0] >> x[1] >> y[1] >> x[2] >> y[2] >> x[3] >> y[3];
    if (check())
    {
        cout << "wen" << endl;
        return 0;
    }
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 4; j++)
        {
            x[i] += xa[j];
            y[i] += yb[j];
            if (check())
            {
                cout << "hai xing" << endl;
                return 0;
            }
            x[i] -= xa[j];
            y[i] -= yb[j];
        }
    cout << "wo jue de bu xing" << endl;
    return 0;
}
发布了57 篇原创文章 · 获赞 69 · 访问量 6363

猜你喜欢

转载自blog.csdn.net/zp1455604302/article/details/102787610
今日推荐