ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

给定四个点,判断能否组成正方形

2019-10-27 21:02:26  阅读:340  来源: 互联网

标签:输出 整点 int 正方形 给定 b1 include 能否


 

 

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

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

 

 

例题: 牛客  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 <= 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\n");
68                             return 0;
69                         }
70                         else
71                         {
72                             printf("hai xing\n");
73                             return 0;
74                         }
75                     }
76                 }
77             }
78         }
79     }
80  
81     printf("wo jue de bu xing\n");
82  
83     return 0;
84 }
View Code

 

 

标签:输出,整点,int,正方形,给定,b1,include,能否
来源: https://www.cnblogs.com/daybreaking/p/11749012.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有