テンセント-模擬試験-技術研究開発類-モバイルクライアント開発-2018実習生募集
6681 ワード
先日テンセント-模擬試験-技術研究開発類-モバイルクライアント開発-2018実習生募集の筆記試験問題を行いました.これは個人が作った2番目の問題です.テーマの意味は簡単です.4つの点が正方形を構成できるかどうかを判断することです.くだらないことは言わないで、下のコードを直接見て、大牛の伝言を歓迎します.
小Qは全世界を探して4つの魔法の石の所在地を探し当てて、4つの魔法の石がちょうど1つの正方形を構成することができる時魔法の陣を起動して、小Qはこれによって1つの願望を実現することができます.4つの魔法石の位置座標を与えて、Qは魔法陣を起動することができるかどうかを知りたいです
入力:1行に1つの整数tが含まれていることを入力して、どれだけのグループのデータを表して、各グループのデータの第1行は4つの整数x[i]を含んで、第2行は4つの整数y[i]を含みます
出力:各セットのデータに対して、魔法陣を起動できれば「YES、そうでなければ「NO」と入力
小Qは全世界を探して4つの魔法の石の所在地を探し当てて、4つの魔法の石がちょうど1つの正方形を構成することができる時魔法の陣を起動して、小Qはこれによって1つの願望を実現することができます.4つの魔法石の位置座標を与えて、Qは魔法陣を起動することができるかどうかを知りたいです
入力:1行に1つの整数tが含まれていることを入力して、どれだけのグループのデータを表して、各グループのデータの第1行は4つの整数x[i]を含んで、第2行は4つの整数y[i]を含みます
出力:各セットのデータに対して、魔法陣を起動できれば「YES、そうでなければ「NO」と入力
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
/**
* - - - -2018
*
* : Q ,
* , Q 。 , Q
*
* : t, , x[i], y[i]
*
* : , “YES, “NO”
* Created by XQM on 2018/4/4.
*/
public class example_46 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();//
if (1 <= t && t <= 5){
List listX = new ArrayList<>();
List listY = new ArrayList<>();
List points = new ArrayList<>();
for (int i = 0;i < t;i++){
for (int j = 0;j < 2;j++){
if (j == 0){
for (int k = 0;k < 4;k++){
listX.add(sc.nextInt());
}
}else {
for (int k = 0;k < 4;k++){
listY.add(sc.nextInt());
}
}
}
}
/**
* Point
*/
for (int i = 0;i < listX.size();i++){
Point p = new Point();
p.x = listX.get(i);
p.y = listY.get(i);
points.add(p);
p = null;
}
for (int k = 0;k < t;k++){
isSquare(k,points);
}
}
}
private static void isSquare(int k, List points) {
double[] length = new double[6];
int m = 0;
for (int i = 4*k;i < 3+4*k;i++){
for (int j = i+1;j < 4+4*k;j++){
length[m++] = Math.pow(points.get(i).getX() - points.get(j).getX(),2.0)
+ Math.pow(points.get(i).getY()-points.get(j).getY(),2.0);
}
}
Arrays.sort(length);
// , , ,
boolean b1 = length[0]>0 && length[1]>0 && length[2]>0 && length[3]>0 && length[4]>0 && length[5]>0;
boolean b2 = length[0] - length[1] < 0.0001 && length[1] - length[2] < 0.0001;
boolean b3 = length[2] - length[3] < 0.0001 && length[4] - length[5] < 0.0001;
if (b1 && b2 && b3){
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}