zoukankan      html  css  js  c++  java
  • 给定四个点,判断能否组成正方形

    求出任意两点之间的六条边后,从小到大排序。

    如果前四条边相等,后两条边相等,且后两条边的长度大于前四条边边,则可以组成正方形。

    例题: 牛客  Forsaken喜欢正方形

    题目描述 

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

    输入描述:

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

    输出描述:

    按题面给定输出。
    示例1

    输入

    复制
    0 0
    0 1
    1 1
    1 0

    输出

    复制
    wen

    备注:

    0 <= x,y <= 100





    AC代码:
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #include <math.h>
     5 #include <algorithm>
     6 #include <queue>
     7 #include <stack>
     8 #include <deque>
     9 #include <iostream>
    10 using namespace std;
    11 typedef long long LL;
    12 const int N = 30000009;
    13  
    14 int x[5], y[5], x2[5], y2[5];
    15 int way[] = {0, 0, 0, 1, 0, -1, 1, 0, -1, 0};
    16 int edge[10];
    17  
    18 int dis(int a1, int b1, int a2, int b2)
    19 {
    20     return (a2 - a1) * (a2 - a1) + (b2 - b1) * (b2 - b1);
    21 }
    22  
    23 int main()
    24 {
    25     int i, j, n, t;
    26     int a, b, c, d, cnt, flag = 0;
    27     for (i = 1; i <= 4; i++)
    28     {
    29         scanf("%d%d", &x2[i], &y2[i]);
    30     }
    31  
    32     for (a = 0; a < 10; a += 2)
    33     {
    34         for (b = 0; b < 10; b += 2)
    35         {
    36             for (c = 0; c < 10; c += 2)
    37             {
    38                 for (d = 0; d < 10; d += 2)
    39                 {
    40                     x[1] = x2[1] + way[a];
    41                     y[1] = y2[1] + way[a + 1];
    42  
    43                     x[2] = x2[2] + way[b];
    44                     y[2] = y2[2] + way[b + 1];
    45  
    46                     x[3] = x2[3] + way[c];
    47                     y[3] = y2[3] + way[c + 1];
    48  
    49                     x[4] = x2[4] + way[d];
    50                     y[4] = y2[4] + way[d + 1];
    51  
    52                     cnt = 1;
    53                     for (i = 1; i <= 4; i++)
    54                     {
    55                         for (j = i + 1; j <= 4; j++)
    56                         {
    57                             edge[cnt++] = dis(x[i], y[i], x[j], y[j]);
    58                         }
    59                     }
    60                     sort(edge + 1, edge + 1 + 6);
    61  
    62                     if (edge[1] == edge[2] && edge[2] == edge[3] && edge[3] == edge[4] && edge[5] == edge[6] && edge[1] < edge[5])
    63                     {
    64  
    65                         if (a == 0 && b == 0 && c == 0 && d == 0)
    66                         {
    67                             printf("wen
    ");
    68                             return 0;
    69                         }
    70                         else
    71                         {
    72                             printf("hai xing
    ");
    73                             return 0;
    74                         }
    75                     }
    76                 }
    77             }
    78         }
    79     }
    80  
    81     printf("wo jue de bu xing
    ");
    82  
    83     return 0;
    84 }
    View Code
     
  • 相关阅读:
    JS控制台打印星星,总有你要的那一款~
    css居中方法
    line-height
    position定位
    IE盒子模型
    CSS中的盒模型
    CSS中的BEM命名
    循环语句总结(代码以C#为例)
    程序设计中的数学思维函数总结(代码以C#为例)
    转:SpringBoot 自定义异常@ContollerAdvice ExceptionHandler不起作用
  • 原文地址:https://www.cnblogs.com/daybreaking/p/11749012.html
Copyright © 2011-2022 走看看