zoukankan      html  css  js  c++  java
  • 几何判断之“Dancing Stars on Me”

    题目大意:给你n个点,判断他们能否构成一个正n边形,能就输出“YES”,不能输出"NO"。

    解题思路:既然是正多边形,那么边长一定相等,且任意对角线都会大于边长(三角形除外),所以只需要先对任意一个点与其他所有点进行距离计算,再遍历所有可能的任意两点,找出最短的路径有多少条,如果正好是n条,就是正多边形。(因为n最多100,所以无需考虑时间问题)

    AC代码:

     1 import java.util.*;
     2 
     3 public class Main{
     4     static double dis(int x1,int y1,int x2,int y2){
     5         double d = Math.sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1));
     6         return d;
     7     }
     8     public static void main(String[] args){
     9         Scanner sc = new Scanner(System.in);
    10         int t = sc.nextInt();
    11         while(sc.hasNext()){
    12             int n = sc.nextInt();
    13             int x[] = new int[n];
    14             int y[] = new int[n];
    15             int sum = 0;
    16             double min = 1000000.0;
    17             for(int i = 0;i < n;i ++){
    18                 x[i] = sc.nextInt();
    19                 y[i] = sc.nextInt();
    20             }
    21             for(int i = 1;i < n;i ++){
    22                 if(min > dis(x[0],y[0],x[i],y[i])){min = dis(x[0],y[0],x[i],y[i]);}
    23             }
    24             for(int i = 0;i < n - 1;i ++){
    25                 for(int j = i + 1;j < n;j ++){
    26                     if(dis(x[i],y[i],x[j],y[j]) == min) sum ++;
    27                 }
    28             }
    29             if(sum == n){System.out.println("YES");}
    30             else {System.out.println("NO");}
    31             t --;
    32         }
    33     }
    34 }
  • 相关阅读:
    TypeScript
    monorepo
    Sass和Less
    浏览器的多进程
    React router的Route应用
    CSS3 之 Media(媒体查询器)
    迷失了自己~
    实现跨域的项目实践
    Python开发入门14天集训营-第二章
    Python开发入门14天集训营-第一章
  • 原文地址:https://www.cnblogs.com/love-fromAtoZ/p/7345176.html
Copyright © 2011-2022 走看看